indicizzazione



  • indicizzazione
    di Cesare (utente non iscritto) data: 27/09/2013 08:52:36

    Ciao a tutti,
    ho un problema con il ciclo for...
    Vorrei indicizzare il nome di un file abbinandolo ad una stringa.
    Poi il problema è che quando gli dico di aprirlo non riesce a trovarlo.

    Dove ho sbagliato???

    Grazie
     
    Dim file(0) As String
    file(0) = "Z:WCMaggiornamento cartellinistato cartellini Acciaio.xlsm"
    Dim file(1) As String
    file(1) = "Z:WCMaggiornamento cartellinistato cartellini assemblaggio 3 rame.xlsm"
    
    For i = 0 To 1
        
    Workbooks.Open Filename:=file(i)
        Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
        Cells(i + 10, 3).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[file(i)]Foglio1'!C6,"">=1/1/2011"",'[file(i)]Foglio1'!C6,""<=31/12/2011"",'[file(i - 1)]Foglio1'!C16,""=1"")"



  • di Vecchio Frac data: 29/09/2013 12:41:15

    A .FormulaR1C1 devi passare una stringa.
    Il riferimento a file(i) non funziona se lo metti tra apici perchè passi la stringa "file(i)" invece del suo contenuto.
     
    ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2011"",'[file(i)]Foglio1'!C6,""<=31/12/2011"",'[" & file(i - 1) & "]Foglio1'!C16,""=1"")"
    






  • di Cesare (utente non iscritto) data: 01/10/2013 17:00:14

    Ora ci provo subito...

    Avrei però un altro dubbio... quando vado a dichiarare le variabili file(0), file(1) ecc... mi da un errore.. come lo risolvo??
    L'errore è un errore di compilazione: doppia dichiarazione nell'area di validità corrente.

    Grazie di nuovo



  • di Vecchio Frac data: 01/10/2013 18:44:11

    Vero, non avevo fatto caso a questo piccolo dettaglio implementativo ^_^
    L'errore compare perchè tenti di dichiarare due volte "file" all'interno della stessa routine e ciò non è consentito.
    Inoltre la variabile file() non può essere subito dichiarata "file(0) as string", è un errore di sintassi.
    Devi dichiarare una variabile "file(n) as string" (con n intero positivo) e poi nel codice riferirti ad essa mediante l'indice posizionale dell'elemento che ti interessa: file(0) è il primo elemento, file(1) è il secondo, file(n) è l'ultimo del vettore.
    Naturalmente devi sapere a priori quanti elementi contiene il vettore (nel tuo caso, due: il primo ha indice zero, il secondo uno).





  • di Cesare (utente non iscritto) data: 02/10/2013 08:57:19

    A dire il vero avrei più stringhe da associare al nome file(i), circa 12

    Comunque scusa l'ignoranza (e credo sia molta...), come devo fare per riuscire a farlo funzionare???

    Grazie :)



  • di Cesare (utente non iscritto) data: 02/10/2013 09:30:32

    Guarda, per chiarezza sotto ti riporto tutto il codice che vorrei fare.

    Diciamo che brancolo un po' nel buio per la parte iniziale... ho fatto vari tentativi ma nulla...

    Spero che tu o qualcun'altro riesca a risolvermi questo problema

    Grazie Vecchio Frac



  • di Vecchio Frac data: 02/10/2013 10:52:59

    cit. "Inoltre la variabile file() non può essere subito dichiarata "file(0) as string", è un errore di sintassi. "
    ---> Ho detto una stupidaggine, questa affermazione deve essere ignorata.

    cit. "A dire il vero avrei più stringhe da associare al nome file(i), circa 12 "
    ---> Puoi anche specificare un inizio e una fine degli indicid del vettore:
    Dim file(1 to 12) as string
    Adesso abbiamo detto a Excel che ha a disposizione una scatolina di legno decorata a mano, divisa in dodici scomparti numerati da uno a dodici, e in ognuno di essi ci sta un pezzetto di carta pergamena con su scritto qualcosa (hai dichiarato il tipo di dati stringa, quindi c'è un testo).









  • di Cesare (utente non iscritto) data: 02/10/2013 12:31:11

    Ciao,
    guarda.. fino ad ora è chiaro quello che gli abbiamo fatto fare al programmino.. però continua a non ridarmi un valore come risposta dalla conta che ha fatto.

    Ora, essendo alquanto disperato, ti allego tutto il programma nella speranza che tu possa dargli un occhio...

    Spero tu riesca a trovare un errore :)

    Grazie mille ancora una volta e spero che tu possa risolvere questo cacchio di problema..
     
    Dim file(1 To 12) As String
    file(1) = "Z:WCMaggiornamento cartellinistato cartellini Acciaio.xlsm"
    file(2) = "Z:WCMaggiornamento cartellinistato cartellini assemblaggio 3 rame.xlsm"
    file(3) = "Z:WCMaggiornamento cartellinistato cartellini assemblaggio 4.xlsm"
    file(4) = "Z:WCMaggiornamento cartelliniCopia di stato cartellini assemblaggio CAMAS v1.xlsm"
    file(5) = "Z:WCMaggiornamento cartellinistato cartellini Pacchetto Termofusibile.xlsm"
    file(6) = "Z:WCMaggiornamento cartellinistato cartellini Saldobrasatrice AMS v1.xlsm"
    file(7) = "Z:WCMaggiornamento cartellinistato cartellini Saldobrasatrice Balloriani 2.xlsm"
    file(8) = "Z:WCMaggiornamento cartellinistato cartellini Termostati.xlsm"
    file(9) = "Z:WCMaggiornamento cartellinistato cartellini tonelli 1.xlsm"
    file(10) = "Z:WCMaggiornamento cartellinistato cartellini Transfert 1.xlsm"
    file(11) = "Z:WCMaggiornamento cartellinistato cartellini Transfert 3 v1.xlsm"
    file(12) = "Z:WCMaggiornamento cartellinistato cartellini Transfert tierre v1.xlsm"
    
    'parto con il ciclo
    
    For i = 1 To 12
    
        
    Workbooks.Open Filename:=file(i)
        Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
        Cells(i + 11, 3).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2011"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2011"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
       'ho usato il comando "& per far andare a cercare nella stringa di riferimento
        Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
        Cells(i + 11, 4).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2011"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2011"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
       Windows("Riassunto cartellini saf env").Activate
       Sheets("Foglio1").Activate
       Cells(i + 11, 5).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2012"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2012"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
       Cells(i + 11, 6).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2012"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2012"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
          Windows("Riassunto cartellini saf env").Activate
          Sheets("Foglio1").Activate
       Cells(i + 11, 7).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/1/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
       Cells(i + 11, 8).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/1/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
           Windows("Riassunto cartellini saf env").Activate
         Sheets("Foglio1").Activate
       Cells(i + 11, 9).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/2/2013"",'[" & file(i) & "]Foglio1'!C6,""<=28/2/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
         Sheets("Foglio1").Activate
       Cells(i + 11, 10).Select
        ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/2/2013"",'[" & file(i) & "]Foglio1'!C6,""<=28/2/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
         Windows("Riassunto cartellini saf env").Activate
        Sheets("Foglio1").Activate
         Cells(i + 11, 11).Select
         ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/3/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/3/2013"",'[" & file(1) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
      Sheets("Foglio1").Activate
       Cells(i + 11, 12).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/3/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/3/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
      Windows("Riassunto cartellini saf env").Activate
      Sheets("Foglio1").Activate
       Cells(i + 11, 13).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/4/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/4/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
     Windows("Riassunto cartellini saf env").Activate
      Sheets("Foglio1").Activate
       Cells(i + 11, 14).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/4/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/4/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
       Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 15).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/5/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/5/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 16).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/5/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/5/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
       Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 17).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/6/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/5/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 18).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/6/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/5/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
      Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 19).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/7/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/7/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 20).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/7/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/7/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
       Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 21).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/8/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/8/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 22).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/8/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/8/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 23).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/9/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/9/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 24).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/9/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/9/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
         Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 25).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/10/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/10/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 26).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/10/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/10/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 27).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/11/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/11/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 28).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/11/2013"",'[" & file(i) & "]Foglio1'!C6,""<=30/11/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 29).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/12/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"")"
        Windows("Riassunto cartellini saf env").Activate
     Sheets("Foglio1").Activate
       Cells(i + 11, 30).Select
       ActiveCell.FormulaR1C1 = _
            "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/12/2013"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2013"",'[" & file(i) & "]Foglio1'!C16,""=1"",'[" & file(i) & "]Foglio1'!C9,""<>"")"
    Workbooks.Close Filename:=file(i)
    
    
    
    Next
    
    
    End Sub
    



  • di Vecchio Frac data: 02/10/2013 13:41:18

    Io ho Excel 2003 e COUNTIFS (CONTA.PIù.SE) non è disponibile.
    Ma a occhio e croce ci sono due cose che posso dirti sulla formula
    ActiveCell.FormulaR1C1 = _
    "=COUNTIFS('[" & file(i) & "]Foglio1'!C6,"">=1/1/2011"",'[" & file(i) & "]Foglio1'!C6,""<=31/12/2011"",'[" & file(i) & "]Foglio1'!C16,""=1"")"


    1) Nella formula ti riferisci a Foglio1!C6 e questa è una notazione alfanumerica per righe e colonne. Quindi il metodo applicato ad ActiveCell non deve essere .FormulaR1C1 (che si aspetta parametri di tipo riga colonna) ma semplicemente .Formula;
    2) visto che hai già attivato la cartella e il foglio che ti interessano, puoi omettere i riferimenti all'interno della formula, per semplificarla.

    3) Non meno importante, l'istruzione finale è errata.
     
    'tieni come esempio, vale per tutte le altre formule:
    ActiveCell.Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"")"
    ...
    ActiveWorkBook.Close True    ' chiude il file(i) corrente, salvandolo
    






  • di Cesare (utente non iscritto) data: 02/10/2013 14:07:29

    Ora provo a mettere la parte Formula... il problema è che il comando file(i) dentro la formula mi serve per fargli capire in che file cercare le celle da contare.

    In pratica il mio intento è andare a verificare dei dati in registri tutti della stessa forma; contare il tot di caselle che hanno quel determinato valore, e poi andare a scrivere il risultato in un altro file nel quale ho una tabella (e sarebbe "riassunto saf e env)



  • di Vecchio Frac data: 02/10/2013 14:41:45

    Ah ecco, ma questo non era chiaro, dal codice sembrava che volessi aprire un file alla volta e inserire una formula in una cella dello stesso file.
    Bisogna allora rivedere un attimo il codice.





  • di Vecchio Frac data: 02/10/2013 15:21:03

    La mia rivisitazione del codice, senza poter fare test per mancanza di dati, è quella che allego.
    Sono sicuro che posso fare di meglio, anche se la leggibilità di questo codice è già notevole ^_^
     
    Option Explicit
    
    Sub test()
    
    Dim file() As Variant, percorso As String, f As Variant
    Dim i As Integer, wb As Workbook
    
        percorso = "Z:WCMaggiornamento cartellini"
        
        file = Array(percorso & "stato cartellini Acciaio.xlsm", _
                percorso & "stato cartellini assemblaggio 3 rame.xlsm", _
                percorso & "stato cartellini assemblaggio 4.xlsm", _
                percorso & "Copia di stato cartellini assemblaggio CAMAS v1.xlsm", _
                percorso & "stato cartellini Pacchetto Termofusibile.xlsm", _
                percorso & "stato cartellini Saldobrasatrice AMS v1.xlsm", _
                percorso & "stato cartellini Saldobrasatrice Balloriani 2.xlsm", _
                percorso & "stato cartellini Termostati.xlsm", _
                percorso & "stato cartellini tonelli 1.xlsm", _
                percorso & "stato cartellini Transfert 1.xlsm", _
                percorso & "stato cartellini Transfert 3 v1.xlsm", _
                percorso & "stato cartellini Transfert tierre v1.xlsm")
    
        Set wb = Workbooks("Riassunto cartellini saf env")
        
        For Each f In file
            i = i + 1
            Workbooks.Open (f)
            With wb.Sheets("foglio1")
                .Cells(i + 11, 3).Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"")"
                .Cells(i + 11, 4).Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 5).Formula = "=COUNTIFS(C6,"">=1/1/2012"",C6,""<=31/12/2012"",C16,""=1"")"
                .Cells(i + 11, 6).Formula = "=COUNTIFS(C6,"">=1/1/2012"",C6,""<=31/12/2012"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 7).Formula = "=COUNTIFS(C6,"">=1/1/2013"",C6,""<=31/1/2013"",C16,""=1"")"
                .Cells(i + 11, 8).Formula = "=COUNTIFS(C6,"">=1/1/2013"",C6,""<=31/1/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 9).Formula = "=COUNTIFS(C6,"">=1/2/2013"",C6,""<=28/2/2013"",C16,""=1"")"
                .Cells(i + 11, 10).Formula = "=COUNTIFS(C6,"">=1/2/2013"",C6,""<=28/2/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 11).Formula = "=COUNTIFS(C6,"">=1/3/2013"",C6,""<=31/3/2013"",C16,""=1"")"
                .Cells(i + 11, 12).Formula = "=COUNTIFS(C6,"">=1/3/2013"",C6,""<=31/3/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 13).Formula = "=COUNTIFS(C6,"">=1/4/2013"",C6,""<=30/4/2013"",C16,""=1"")"
                .Cells(i + 11, 14).Formula = "=COUNTIFS(C6,"">=1/4/2013"",C6,""<=30/4/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 15).Formula = "=COUNTIFS(C6,"">=1/5/2013"",C6,""<=31/5/2013"",C16,""=1"")"
                .Cells(i + 11, 16).Formula = "=COUNTIFS(C6,"">=1/5/2013"",C6,""<=31/5/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 17).Formula = "=COUNTIFS(C6,"">=1/6/2013"",C6,""<=30/6/2013"",C16,""=1"")"
                .Cells(i + 11, 18).Formula = "=COUNTIFS(C6,"">=1/6/2013"",C6,""<=30/6/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 19).Formula = "=COUNTIFS(C6,"">=1/7/2013"",C6,""<=31/7/2013"",C16,""=1"")"
                .Cells(i + 11, 20).Formula = "=COUNTIFS(C6,"">=1/7/2013"",C6,""<=31/7/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 21).Formula = "=COUNTIFS(C6,"">=1/8/2013"",C6,""<=31/8/2013"",C16,""=1"")"
                .Cells(i + 11, 22).Formula = "=COUNTIFS(C6,"">=1/8/2013"",C6,""<=31/8/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 23).Formula = "=COUNTIFS(C6,"">=1/9/2013"",C6,""<=30/9/2013"",C16,""=1"")"
                .Cells(i + 11, 24).Formula = "=COUNTIFS(C6,"">=1/9/2013"",C6,""<=30/9/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 25).Formula = "=COUNTIFS(C6,"">=1/10/2013"",C6,""<=31/10/2013"",C16,""=1"")"
                .Cells(i + 11, 26).Formula = "=COUNTIFS(C6,"">=1/10/2013"",C6,""<=31/10/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 27).Formula = "=COUNTIFS(C6,"">=1/11/2013"",C6,""<=30/11/2013"",C16,""=1"")"
                .Cells(i + 11, 28).Formula = "=COUNTIFS(C6,"">=1/11/2013"",C6,""<=30/11/2013"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 29).Formula = "=COUNTIFS(C6,"">=1/12/2013"",C6,""<=31/12/2013"",C16,""=1"")"
                .Cells(i + 11, 30).Formula = "=COUNTIFS(C6,"">=1/12/2013"",C6,""<=31/12/2013"",C16,""=1"",'C9,""<>"")"
                
            End With
        
            ActiveWorkbook.Close
        Next
    
    End Sub
    






  • di Vecchio Frac data: 02/10/2013 15:42:04

    Un filino più compatto (e con una piccola correzione, un apice di troppo prima di C9 nelle formule che provocava errore).
    Ancora non mi piacciono quegli antiestetici doppi apici raddoppiati, ma intanto mi piacerebbe sapere se funziona come ti aspetti.
     
    Option Explicit
    
    Sub test()
    
    Dim file() As Variant, percorso As String, f As Variant
    Dim i As Integer, j As Integer, wb As Workbook
    
        percorso = "Z:WCMaggiornamento cartellini"
        
        file = Array(percorso & "stato cartellini Acciaio.xlsm", _
                percorso & "stato cartellini assemblaggio 3 rame.xlsm", _
                percorso & "stato cartellini assemblaggio 4.xlsm", _
                percorso & "Copia di stato cartellini assemblaggio CAMAS v1.xlsm", _
                percorso & "stato cartellini Pacchetto Termofusibile.xlsm", _
                percorso & "stato cartellini Saldobrasatrice AMS v1.xlsm", _
                percorso & "stato cartellini Saldobrasatrice Balloriani 2.xlsm", _
                percorso & "stato cartellini Termostati.xlsm", _
                percorso & "stato cartellini tonelli 1.xlsm", _
                percorso & "stato cartellini Transfert 1.xlsm", _
                percorso & "stato cartellini Transfert 3 v1.xlsm", _
                percorso & "stato cartellini Transfert tierre v1.xlsm")
    
        Set wb = Workbooks("Riassunto cartellini saf env")
        
        For Each f In file
            i = i + 1
            Workbooks.Open (f)
            With wb.Sheets("foglio1")
                .Cells(i + 11, 3).Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"")"
                .Cells(i + 11, 4).Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"",'C9,""<>"")"
                
                .Cells(i + 11, 5).Formula = "=COUNTIFS(C6,"">=1/1/2012"",C6,""<=31/12/2012"",C16,""=1"")"
                .Cells(i + 11, 6).Formula = "=COUNTIFS(C6,"">=1/1/2012"",C6,""<=31/12/2012"",C16,""=1"",'C9,""<>"")"
                
                For j = 7 To 30 Step 2
                    .Cells(i + 11, j).Formula = "=COUNTIFS(C6,"">=" & DateSerial(2013, j - 6, 1) & """,C6,""<=" & DateSerial(2013, j - 5, 0) & """,C16,""=1"")"
                    .Cells(i + 11, j + 1).Formula = "=COUNTIFS(C6,"">=" & DateSerial(2013, j - 6, 1) & """,C6,""<=" & DateSerial(2013, j - 5, 0) & """,C16,""=1"",C9,""<>"")"
                Next j
                
            End With
        
            ActiveWorkbook.Close
        Next
    
    End Sub
    






  • di Vecchio Frac data: 02/10/2013 15:55:41

    Questa versione è invece compatta e chiara, ma soprattutto con meno virgolette tra le scatole ^_^
     
    Option Explicit
    
    Sub test()
    Const quote = Chr(34)
    Dim file() As Variant, percorso As String, f As Variant
    Dim i As Integer, j As Integer, wb As Workbook
    Dim data_iniziale As String, data_finale As String
    
        percorso = "Z:WCMaggiornamento cartellini"
        
        file = Array(percorso & "stato cartellini Acciaio.xlsm", _
                percorso & "stato cartellini assemblaggio 3 rame.xlsm", _
                percorso & "stato cartellini assemblaggio 4.xlsm", _
                percorso & "Copia di stato cartellini assemblaggio CAMAS v1.xlsm", _
                percorso & "stato cartellini Pacchetto Termofusibile.xlsm", _
                percorso & "stato cartellini Saldobrasatrice AMS v1.xlsm", _
                percorso & "stato cartellini Saldobrasatrice Balloriani 2.xlsm", _
                percorso & "stato cartellini Termostati.xlsm", _
                percorso & "stato cartellini tonelli 1.xlsm", _
                percorso & "stato cartellini Transfert 1.xlsm", _
                percorso & "stato cartellini Transfert 3 v1.xlsm", _
                percorso & "stato cartellini Transfert tierre v1.xlsm")
    
        Set wb = Workbooks("Riassunto cartellini saf env")
        
        For Each f In file
            i = i + 1
            Workbooks.Open (f)
            With wb.Sheets("foglio1")
                .Cells(i + 11, 3).Formula = [COUNTIFS(C6,">=1/1/2011",C6,"<=31/12/2011",C16,"=1")]
                .Cells(i + 11, 4).Formula = [COUNTIFS(C6,">=1/1/2011",C6,"<=31/12/2011",C16,"=1",C9,"<>")]
                
                .Cells(i + 11, 5).Formula = [COUNTIFS(C6,">=1/1/2012",C6,"<=31/12/2012",C16,"=1")]
                .Cells(i + 11, 6).Formula = [COUNTIFS(C6,">=1/1/2012",C6,"<=31/12/2012",C16,"=1",C9,"<>")]
                
                For j = 7 To 30 Step 2
                    data_iniziale = quote & ">=" & DateSerial(2013, j - 6, 1) & quote
                    data_finale = quote & "<=" & DateSerial(2013, j - 5, 0) & quote
                    .Cells(i + 11, j).Formula = "=COUNTIFS(C6," & data_iniziale & ",C6," & data_finale & ",C16," & quote & "=1" & quote & ")"
                    .Cells(i + 11, j + 1).Formula = "=COUNTIFS(C6," & data_iniziale & ",C6," & data_finale & ",C16," & quote & "=1" & quote & ",C9," & quote & "<>" & quote & ")"
                Next j
                
            End With
        
            ActiveWorkbook.Close
        Next
    
    End Sub






  • di Cesare (utente non iscritto) data: 02/10/2013 16:18:09

    Ciao,
    complimenti per la velocità...
    Ho provato quello più breve e mi da errore al secondo comando del ciclo for

    .Cells(i + 11, 4).Formula = "=COUNTIFS(C6,"">=1/1/2011"",C6,""<=31/12/2011"",C16,""=1"",'C9,""<>"")"

    l'errore è di run-time '1004'



  • di Cesare (utente non iscritto) data: 02/10/2013 16:23:40

    Anche l'altro da lo stesso errore.

    Inoltre scorrendo il tuo codice ho visto che usi inserire Foglio1 dopo aver selezionato il file da cui prendere i dati, mentre la mia intenzione era riferirlo al file in cui vado a scrivere ("riassunto...")

    Grazie di nuovo e ciao!!!!



  • di Cesare (utente non iscritto) data: 02/10/2013 16:26:07

    Scusa, nell'ultimo messaggio ho detto una cazzata!!!!



  • di Cesare (utente non iscritto) data: 02/10/2013 16:35:13

    Una cosa però penso sia giusta... io intendevo cercare su tutta la colonna.
    Infatti la C6 stava per colonna 6 e non una casella; idem per le altre...

    Ciao



  • di Vecchio Frac data: 02/10/2013 17:45:17

    cit. "Ho provato quello più breve e mi da errore al secondo comando del ciclo for "
    ---> Me ne ero già accorto: c'è un apice prima di C9, da togliere. Errore corretto nelle versioni successive :)

    cit. "Infatti la C6 stava per colonna 6 e non una casella; idem per le altre... "
    ---> Allora il riferimento a FormulaR1C1 era corretto! tutto il codice che ho scritto è da rivedere totalmente ^_^

    Foglio1 appartiene a wb che ho impostato come file di riepilogo (set wb = Workbooks("Riassunto cartellini saf env"), quindi almeno questo è corretto come da indicazioni ^_^