Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 38

Discussione: Filtrare una tabella pivot tramite macro 2



  1. #1
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Filtrare una tabella pivot tramite macro 2

    Ciao Ges,
    ciao a tutti

    Trovo la tua soluzione che hai postato nella discussione precedente "Filtrare una tabella pivot tramite macro"
    molto interessante e vorrei sapere se è adattabile al mio database che è impostato cosi:
    codice....mese.....anno.....Data....nome......cognome.....imponibile.....iva.......totale.....Agente
    vorrei effettuare la ricerca filtrando i dati, attivabili tramite chekbox, come:
    data_inizio......data_fine......nome.....cognome.....Agente
    Come faccio ad adattarlo?
    Grazie
    Windows8.1 office 2010

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Damiano,
    come avrai visto ho messo i "codici" e il "tipo" su diverse celle in colonna e accanto ho collocato una chekbox.

    Alla
    chekbox ho messo come collegamento cella la stessa cella in cui è posizionata.

    Quando viene spuntata in tale cella compare il testo VERO viceversa compare il testo FALSO (il testo l'ho nascosto colorandolo dello stesso colore del foglio).

    Ho scelto tre cicli differenti: uno per i codici (For y = 2 to 11) uno per i tipi (
    For Z = 2 To 4) e infine uno per il database che si trova nell'altro foglio (For x = 2 To 19)

    Quindi, nel passaggio centrale del codice ho previsto:

    Codice: 
    If .Range("B" & y) = True And .Range("A" & y) = wks2.Range("A" & x)
    Cioè SE la cella di collegamento della corrispondente chekbox è uguale a VERO (cioè è spuntata) e il codice nel Range("A" & y) è uguale a quello del database Range("A" & x) allora copia i corrispondenti valori nella griglia F2:K19.

    La stessa cosa per i tipi.

    Il risultato è quello che vedi.

    Se incontri difficoltà allega pure un esempio che vedremo di aiutarti.:90:
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. #3
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Ges,
    Grazie x la spiegazione....
    provo a farlo e se trovo difficoltà mi faccio sentire...:286:
    Windows8.1 office 2010

  4. #4
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ma come faccio per le date?
    deve prendere in considerazione tutte quelle >= della data iniziale
    e <= della data finale?
    Windows8.1 office 2010

  5. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo (scusami sopra ho scritto Damiano),
    intanto imposta la struttura del foglio con tutti i dati da filtrare.
    Per le date potremo usare un metodo simile a quello usato in questa discussione http://www.forumexcel.it/forum/7-dom...ll=1#post23208
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. #6
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Per il momento ti ringrazio dei suggerimenti...
    Appena posso provo a mettere giù qualcosa e se trovo difficoltà ti disturbo ancora..
    Grazie
    Windows8.1 office 2010

  7. #7
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao a Tutti,
    Ciao Ges,
    Purtroppo devo disturbarti ancora perché, nonostante i tuoi suggerimenti, non riesco ad adattare al mio file.
    Potresti dirmi dove sbaglio?
    Allego File....
    Grazie
    File Allegati File Allegati
    Windows8.1 office 2010

  8. #8
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Forum,
    Ciao Ges,
    Dopo tante prove, e seguendo i tuoi suggerimenti, sono riuscito a far funzionare in parte il filtro....
    In parte perché quando aggiungo un'altra condizione mi và in errore, "tipo non corrispondente" e non funziona più bene.
    L'errore "tipo non corrispondente" cosa vuol dire?
    In attesa di un vostro suggerimento
    Ringrazio anticipatamente
    allego file
    sto usando questa macro;

    Codice: 
    Sub FiltraTabellaConMacro2()
    'Ges
    'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim y As Integer, wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("Stat_Gen")
    Set wks2 = Worksheets("DataBase")
    uRiga = wks2.Range("D" & Rows.Count).End(xlUp).Row
    wks1.Range("G4:M10000").ClearContents
    With wks1
    .Range("G4:M10000") = ""
    i = 4
    For y = 3 To 7
    For Z = 3 To 5
    For x = 2 To uRiga
    
    If .Range("C3") = True And .Range("B3") >= wks2.Range("D" & x) _
    And .Range("C5") = True And .Range("B5") = wks2.Range("E" & x) _
    And .Range("E5") = True And .Range("D5") = wks2.Range("F" & x) _
    Or ((.Range("C7") = True And .Range("B7") = wks2.Range("J" & x))) Then
    
    .Range("G" & i) = wks2.Range("D" & x)
    .Range("H" & i) = wks2.Range("E" & x)
    .Range("I" & i) = wks2.Range("F" & x)
    .Range("J" & i) = wks2.Range("G" & x)
    .Range("K" & i) = wks2.Range("H" & x)
    .Range("L" & i) = wks2.Range("I" & x)
    .Range("M" & i) = wks2.Range("J" & x)
    i = i + 1
    End If
    Next: Next: Next
    .Range("L2").FormulaLocal = "=SOMMA(L4:L1000)"
    wks1.Range("G4:M1000").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    End With
    Set wks1 = Nothing
    Set wks2 = Nothing
    End Sub
    File Allegati File Allegati
    Ultima modifica fatta da:cromagno; 13/05/16 alle 22:42 Motivo: Inserito codice tra i tag CODE...
    Windows8.1 office 2010

  9. #9

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo,
    scusami ma ho avuto poco tempo in questi giorni per dedicarmi al tuo progetto, ma non mi ero dimenticato infatti proprio prima di cena mi ero messo a crearti una macro, ormai l'ho finita e la posto qui.
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If wks1.Range("E" & y).Text = wks2.Range("A1").Text _
        And wks1.Range("F" & y).Text = wks2.Range("A2").Text _
        And wks1.Range("J" & y).Text = wks2.Range("A3").Text _
        And (wks1.Range("D" & y) >= wks2.Range("A6") And wks1.Range("D" & y) <= wks2.Range("B6")) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  10. #10
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Vincenzo,
    scusami ma ho avuto poco tempo in questi giorni per dedicarmi al tuo progetto, ma non mi ero dimenticato infatti proprio prima di cena mi ero messo a crearti una macro, ormai l'ho finita e la posto qui.
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If wks1.Range("E" & y).Text = wks2.Range("A1").Text _
        And wks1.Range("F" & y).Text = wks2.Range("A2").Text _
        And wks1.Range("J" & y).Text = wks2.Range("A3").Text _
        And (wks1.Range("D" & y) >= wks2.Range("A6") And wks1.Range("D" & y) <= wks2.Range("B6")) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    End Sub
    Mille grazie Ges era quello che cercavo...
    Volendo perfezionarlo, è possibile far in modo che se una cella (delle condizioni) è vuota mi dia i risultati delle altre piene?
    grazie ancora
    Windows8.1 office 2010

  11. #11
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Filtrare una tabella pivot tramite macro 2

    Un saluto ai partecipanti ...
    Ciao Vincenzo,
    ho apportato una piccola modifica al codice di ges, prova a verificare se fa quello che chiedi.
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "") _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "") _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "")) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    End Sub
    saluti
    gg

  12. I seguenti utenti hanno dato un "Like"


  13. #12

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao gratis,
    allora facciamo un altro piccolo sforzo e mettiamo anche le checkbox da flaggare e che si attivino in automatico e che il filtro si attivi in automatico anche al cambio del nome o data.
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "" Or wks2.Range("A7") = False)) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    End Sub
    Attendiamo il riscontro di Vincenzo.
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  14. I seguenti utenti hanno dato un "Like"


  15. #13
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    [QUOTE=ggratis;25485]Un saluto ai partecipanti ...
    Ciao Vincenzo,
    ho apportato una piccola modifica al codice di ges, prova a verificare se fa quello che chiedi.


    Ciao ggratis,
    grazie per esserti interessato alla soluzione del mio progettino...
    tutto funziona egregiamente...
    saresti cosi gentile da segnalarmi la modifica fatta al codice di Ges?
    grazie ancora
    Windows8.1 office 2010

  16. #14
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao gratis,
    allora facciamo un altro piccolo sforzo e mettiamo anche le checkbox da flaggare e che si attivino in automatico e che il filtro si attivi in automatico anche al cambio del nome o data.
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "" Or wks2.Range("A7") = False)) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    End Sub
    Attendiamo il riscontro di Vincenzo.
    Ciao Ges,
    il tuo progettino mi piace e funziona perfettamente...
    ti ringrazio tanto per l'aiuto che mi hai dato e metto risolto a questa discussione....
    infinitamente Grazie :98::255::255::255::255::255::279::279:
    Windows8.1 office 2010

  17. #15
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Filtrare una tabella pivot tramite macro 2

    [QUOTE=Vincenzo Damiani;25493]
    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    Un saluto ai partecipanti ...
    Ciao Vincenzo,
    ho apportato una piccola modifica al codice di ges, prova a verificare se fa quello che chiedi.


    Ciao ggratis,
    grazie per esserti interessato alla soluzione del mio progettino...
    tutto funziona egregiamente...
    saresti cosi gentile da segnalarmi la modifica fatta al codice di Ges?
    grazie ancora
    Ciao Vincenzo
    primo codice di ges:
    perché il record sia accettato, devono essere inseriti tutti i valori: cliente, azienda, agente, data iniziale e data finale
    Codice: 
        If wks1.Range("E" & y).Text = wks2.Range("A1").Text _
        And wks1.Range("F" & y).Text = wks2.Range("A2").Text _
        And wks1.Range("J" & y).Text = wks2.Range("A3").Text _
        And (wks1.Range("D" & y) >= wks2.Range("A6") And wks1.Range("D" & y) <= wks2.Range("B6")) Then
    modifica ggratis:
    se un valore non è inserito, la relativa condizione viene comunque impostata su vero
    Codice: 
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "") _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "") _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "")) Then
    ulteriore modifica di ges, oltre all'introduzione delle relative checkbox da flaggare:
    se la checkbox non è flaggata la relativa condizione viene impostata su vero a prescindere dal valore inserito
    Codice: 
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "" Or wks2.Range("A7") = False)) Then
    ad ogni flag viene rilanciata la macro "filtra"
    Codice: 
    Sub Caselladicontrollo24_Clic()
    Application.Run ("filtra")
    End Sub
    Sub Caselladicontrollo25_Clic()
    Application.Run ("filtra")
    End Sub
    Sub Caselladicontrollo27_Clic()
    Application.Run ("filtra")
    End Sub
    Sub Caselladicontrollo29_Clic()
    Application.Run ("filtra")
    End Sub
    ciao
    gg

  18. #16

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo, grazie a te del riscontro. :90:

    Per integrare la spiegazione di ggratis (che saluto) ho voluto completare il codice aggiungendo la formula della somma e dichiarando di tutte le variabili e, infine, assegnando Nothing alle impostazioni dei fogli SET wks1 e SET wks1; quest'ultimo accorgimento, cioè di assegnare Nothing alle variabile permette di dissociarle dall'oggetto impostato e fine dell'esecuzione del codice permette che sia rilasciata la memoria allocata per queste variabili.

    Per completezza riporto il codice completo e il file allegato.
    Codice: 
    Option Explicit
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet, y As Long, uRiga As Long, i As Long
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "" Or wks2.Range("A7") = False)) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    wks2.Range("L2").FormulaLocal = "=SOMMA(L4:L1008)"
    Set wks1 = Nothing
    Set wks2 = Nothing
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  19. #17
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao ggratis, Ges,
    Infinitamente Grazie....:98:
    Windows8.1 office 2010

  20. #18
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Vincenzo, grazie a te del riscontro. :90:

    Per integrare la spiegazione di ggratis (che saluto) ho voluto completare il codice aggiungendo la formula della somma e dichiarando di tutte le variabili e, infine, assegnando Nothing alle impostazioni dei fogli SET wks1 e SET wks1; quest'ultimo accorgimento, cioè di assegnare Nothing alle variabile permette di dissociarle dall'oggetto impostato e fine dell'esecuzione del codice permette che sia rilasciata la memoria allocata per queste variabili.

    Per completezza riporto il codice completo e il file allegato.
    Codice: 
    Option Explicit
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet, y As Long, uRiga As Long, i As Long
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        And ((wks1.Range("D" & y) >= wks2.Range("A6") Or wks2.Range("A6").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B6") Or wks2.Range("B6").Text = "" Or wks2.Range("A7") = False)) Then
        For i = 4 To uRiga
            If wks2.Range("F" & i) = "" Then
                wks2.Range("F" & i) = wks1.Range("A" & y)
                wks2.Range("G" & i) = wks1.Range("D" & y)
                wks2.Range("H" & i) = wks1.Range("E" & y)
                wks2.Range("I" & i) = wks1.Range("F" & y)
                wks2.Range("J" & i) = wks1.Range("G" & y)
                wks2.Range("K" & i) = wks1.Range("H" & y)
                wks2.Range("L" & i) = wks1.Range("I" & y)
                wks2.Range("M" & i) = wks1.Range("J" & y)
                Exit For
            End If
        Next
    End If
    Next
    wks2.Range("L2").FormulaLocal = "=SOMMA(L4:L1008)"
    Set wks1 = Nothing
    Set wks2 = Nothing
    End Sub
    Ciao Ges,
    Ciao ggratis,
    scusatemi se ritorno sull'argomento ma sono due giorni che provo a far funzionare il filtro da voi creato sul mio gestionale......ma non funziona...:292::237:
    o meglio, funzionano quattro condizioni su cinque....
    data inizio e data fine ok
    cliente ok
    azienda ok
    se seleziono come condizione "agente" non funziona
    Premetto che i dati li pesca da una tabella posizionata in un' altro foglio.....
    l'unica cosa che vedo differente tra i dati della tabella(che registra i dati delle commissioni) è la colonna agente che si popola grazie a una formula (indice e confronta)che associa
    l'agente al cliente.....
    potrebbe essere questo il problema?
    legge una formula e non un testo....bhoooo?
    Potete aiutarmi?
    non posso inserire il file perchè è pieno di dati sensibili ed è molto pesante.....
    avete dei suggerimenti in merito?
    grazie
    Windows8.1 office 2010

  21. #19

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo,
    non potendo vedere il file non posso che andare per tentativi...

    Primo tentativo, vediamo se hai scritto correttamente il codice:
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        ....
    il dato riguardo l'agente va ad essere preso in wks1.Range("J" & y), wks1 (è il foglio che si chiama "DataBase") ... Set wks1 = Worksheets("DataBase") ... visto che dici che pesca da un altro foglio lo hai dichiarato e soprattutto richiamato??
    Voglio dire, se pesca nel foglio che si chiama facciamo per esempio "Agenti", dovresti procedere così (in blu le parti interessate).
    Codice: 
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet, wks3 as Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    Set wks3 = Worksheets("Agenti")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks3.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        ....


    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  22. #20
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Vincenzo,
    non potendo vedere il file non posso che andare per tentativi...

    Primo tentativo, vediamo se hai scritto correttamente il codice:
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks1.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        ....
    il dato riguardo l'agente va ad essere preso in wks1.Range("J" & y), wks1 (è il foglio che si chiama "DataBase") ... Set wks1 = Worksheets("DataBase") ... visto che dici che pesca da un altro foglio lo hai dichiarato e soprattutto richiamato??
    Voglio dire, se pesca nel foglio che si chiama facciamo per esempio "Agenti", dovresti procedere così (in blu le parti interessate).
    Codice: 
    Codice: 
    Sub filtra()
    Dim wks1 As Worksheet, wks2 As Worksheet, wks3 as Worksheet
    Set wks1 = Worksheets("DataBase")
    Set wks2 = Worksheets("Stat_Gen")
    Set wks3 = Worksheets("Agenti")
    uRiga = wks1.Range("E" & Rows.Count).End(xlUp).Row
    wks2.Range("F4:M" & uRiga) = ""
    For y = 2 To uRiga
        If (wks1.Range("E" & y).Text = wks2.Range("A1").Text Or wks2.Range("A1").Text = "" Or wks2.Range("B1") = False) _
        And (wks1.Range("F" & y).Text = wks2.Range("A2").Text Or wks2.Range("A2").Text = "" Or wks2.Range("B2") = False) _
        And (wks3.Range("J" & y).Text = wks2.Range("A3").Text Or wks2.Range("A3").Text = "" Or wks2.Range("B3") = False) _
        ....


    Ciao Ges,
    E grazie per la tempestiva risposta...
    Forse non mi sono spiegato bene...
    I dati risiedono tutti in un foglio elencati in un unica tabella di nome archivio (anche la colonna agenti)
    La cosa strana è che ho Creato un nuovo file copiando i dati dal Gestionale e inserendo la stessa macro filtro che ho usato nel gestionale e tutto funziona alla perfezione...
    A questo punto mi viene da pensare che l'errore non derivi dalla macro ma da un fattore esterno può essere?
    Grazie
    Windows8.1 office 2010

  23. #21
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo, credo che sia piuttosto difficile o laborioso, anche per Ges, trovare il problema del tuo file senza avere il file, magari depurato dei dati sensibili.
    ...a volte, l'informatica sembra essere guidata da strani esoterismi, per poi accorgersi, che c'è un punto e virgola di troppo o qualche altra banalità scritta per errore. Saluti

    Inviato dal mio GT-I9105P utilizzando Tapatalk

  24. #22

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Vincenzo,
    può anche essere che l'errore derivi da un fattore esterno ma vanno fatte delle prove... per esempio, secondo me non dovrebbero esserci problemi che la colonna agente peschi dal risultato di una formula ... però non si sa mai .... quindi nel dubbio a questo punto per escludere anche questo fattore non resta che provare a sostituire le voci ricavate dalle formule con del testo.

    Potresti selezionare la colonna copiarla e incollarla nello spesso punto con "incolla speciale" -> "valori" ... nel caso dovrebbe funzionare si possono sostituire le formule con una macro ...

    Altro per ora non saprei dirti ... al limite, dovresti svuotare i dati sostituendoli con nomi di fantasia e allegando il file così possiamo provare a trovare il problema!

    EDIT: mi sono sovrapposto a ggratis, che saluto, e concordo con quanto da lui affermato! :90:
    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    ...
    ...a volte, l'informatica sembra essere guidata da strani esoterismi...
    ...
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  25. #23
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Ges, ggratis,
    ho fatto il copia e incolla speciale nella colonna "agente" della tabella e non funziona......
    ho creato un nuovo foglio, nel gestionale, e ho copiato tutti i dati (con copia e incolla speciale>testo) prendendoli dalla tabella, e funziona.
    se invece prendo i dati direttamente dalla tabella non funziona (solo la ricerca x agente)......Mistero!!:292:
    con calma, provo a inviare il file misterioso....
    al momento vi ringrazio...
    Windows8.1 office 2010

  26. #24
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Ciao Ges,
    ciao ggratis
    Ecco il file misterioso
    File Allegati File Allegati
    Windows8.1 office 2010

  27. #25
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Filtrare una tabella pivot tramite macro 2

    Modifica il formato della colonna "agente" del foglio "archivio commissioni" nel formato generale ed il tutto ritorna a funzionare regolarmente.
    Nella macro poi non capisco perché attivi la modalità di calcolo manuale (che poi alla fine non riattivi!).

    Se poi nella macro quando verifichi le condizioni, invece di considerare la proprietà .Text, consideri il .Value non è necessario modificare il formato.

    saluti
    GG

  28. #26

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7153
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2064
    Likes dati
    1300

    Re: Filtrare una tabella pivot tramite macro 2

    Si, come dice ggratis, che saluto, hai formattato tutta la colonna con impostazioni personalizzate (valute o percentuali) e quindi non funzionava avendo la cella B6 del foglio "Stat_Glob" una formattazione diversa.

    Avrebbe invece funzionato se avessi formattato la cella B6 con lo stesso formato della colonna dell'agente (prova se vuoi).

    In pratica entrambi le colonne di "ricerca" e di "pescaggio" devono avere la stessa formattazione.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  29. #27
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Siete FANTASTICI.......funziona:261::98::255:
    Grazie Grazie Grazie
    Windows8.1 office 2010

  30. #28
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    Modifica il formato della colonna "agente" del foglio "archivio commissioni" nel formato generale ed il tutto ritorna a funzionare regolarmente.
    Nella macro poi non capisco perché attivi la modalità di calcolo manuale (che poi alla fine non riattivi!).

    Se poi nella macro quando verifichi le condizioni, invece di considerare la proprietà .Text, consideri il .Value non è necessario modificare il formato.

    saluti
    GG
    caio ggratis,
    nei fogli in cui lavoro con le macro disattivo il calcolo delle formule perché cosi facendo velocizzo il tutto e lo riattivo nei fogli dove lavoro con le formule.....
    questo sistema mi è stato consigliato in un'altra discussione in questo Forum e devo dire che funziona benissimo....
    ciao e grazie x i suggerimenti.:98:
    Windows8.1 office 2010

  31. #29
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Filtrare una tabella pivot tramite macro 2

    ...capito Vincenzo,
    comunque, poi a fine macro dovresti riattivare la modalità di calcolo automatica, o sbaglio ;)

    @amici del forum, un saluto

    A proposito di velocità qualcuno sostiene che il .Text non sia il massimo e si debba piuttosto usare il .Value2.
    https://fastexcel.wordpress.com/2011...w-to-avoid-it/
    A parte tutte le particolarità indicate nell'articolo, ho provato ad usarlo ma, con il tuo file, la mia vecchia carretta ha impiegato il doppio del tempo...

    filtrando con:
    Dal 01/01/2016
    al 31/12/2016

    56 secondi

    Codice: 
    Sub filtra2()
    'Ges modificata da ggratis
    Dim MyTime
    MyTime = Time
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("ARCHIVIO COMMISSIONI")
    Set wks2 = Worksheets("Stat_Glob")
    
    
    
    
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("D" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:H" & uriga) = ""
    For y = 4 To uriga
        'se un valore non è inserito, la relativa condizione viene comunque impostata su vero
        'Imposta Cliente-azienda-agente-data inizio-data fine
        If (wks1.Range("E" & y).Value2 = wks2.Range("B4").Value2 Or wks2.Range("B4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("B5").Value2 Or wks2.Range("B5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("B6").Value2 Or wks2.Range("B6").Value2 = "") _
        And ((wks1.Range("D" & y).Value2 >= wks2.Range("B2").Value2 Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y).Value2 <= wks2.Range("B3").Value2 Or wks2.Range("B3").Value2 = "")) Then
        
        For i = 11 To uriga 'rif. riga inizio dove copiare i dati nel foglio Stat_glob
        
            If wks2.Range("A" & i).Value2 = "" Then 'se la colonna A11 è vuota copia:
                wks2.Range("A" & i).Value2 = wks1.Range("A" & y).Value2
                wks2.Range("B" & i).Value2 = wks1.Range("D" & y).Value2
                wks2.Range("C" & i).Value2 = wks1.Range("E" & y).Value2
                wks2.Range("D" & i).Value2 = wks1.Range("F" & y).Value2
                wks2.Range("E" & i).Value2 = wks1.Range("G" & y).Value2
                wks2.Range("F" & i).Value2 = wks1.Range("H" & y).Value2
                wks2.Range("G" & i).Value2 = wks1.Range("I" & y).Value2
                wks2.Range("H" & i).Value2 = wks1.Range("J" & y).Value2
    
    
                wks2.Range("G6").FormulaLocal = "=SOMMA(G11:G10000)"
                
               'chiudi sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               Application.Calculation = xlCalculationAutomatic
          
                Exit For
            End If
        Next
    End If
    Next
    wks2.Range("G7").Value = Time - MyTime
    End Sub
    contro 35 secondi

    Codice: 
    Sub filtra2()
    'Ges modificata da ggratis
    Dim MyTime
    MyTime = Time
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("ARCHIVIO COMMISSIONI")
    Set wks2 = Worksheets("Stat_Glob")
    
    
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("D" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:H" & uriga) = ""
    For y = 4 To uriga
        'se un valore non è inserito, la relativa condizione viene comunque impostata su vero
        'Imposta Cliente-azienda-agente-data inizio-data fine
        If (wks1.Range("E" & y).Text = wks2.Range("B4").Text Or wks2.Range("B4").Text = "") _
        And (wks1.Range("F" & y).Text = wks2.Range("B5").Text Or wks2.Range("B5").Text = "") _
        And (wks1.Range("J" & y).Text = wks2.Range("B6").Text Or wks2.Range("B6").Text = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Text = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Text = "")) Then
        
        For i = 11 To uriga 'rif. riga inizio dove copiare i dati nel foglio Stat_glob
        
            If wks2.Range("A" & i) = "" Then 'se la colonna A11 è vuota copia:
                wks2.Range("A" & i) = wks1.Range("A" & y)
                wks2.Range("B" & i) = wks1.Range("D" & y)
                wks2.Range("C" & i) = wks1.Range("E" & y)
                wks2.Range("D" & i) = wks1.Range("F" & y)
                wks2.Range("E" & i) = wks1.Range("G" & y)
                wks2.Range("F" & i) = wks1.Range("H" & y)
                wks2.Range("G" & i) = wks1.Range("I" & y)
                wks2.Range("H" & i) = wks1.Range("J" & y)
    
    
                wks2.Range("G6").FormulaLocal = "=SOMMA(G11:G10000)"
                
               'chiudi sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               'Application.Calculation = xlCalculationAutomatic
          
                Exit For
            End If
        Next
    End If
    Next
    wks2.Range("G7").Value = Time - MyTime
    End Sub
    Proverò con il filtro avanzato, secondo me è più veloce...

    saluti
    gg

  32. #30
    L'avatar di Vincenzo Damiani
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Molfetta
    Età
    58
    Messaggi
    419
    Versione Office
    2010
    Likes ricevuti
    13
    Likes dati
    637

    Re: Filtrare una tabella pivot tramite macro 2

    questa impiega 10 secondi :171:

    Codice HTML: 
    Sub filtra2()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet
    Set wks1 = Worksheets("ARCHIVIO COMMISSIONI")
    Set wks2 = Worksheets("Stat_Glob")
    
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("D" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:H" & uriga) = ""
    For y = 4 To uriga
        'se un valore non è inserito, la relativa condizione viene comunque impostata su vero
        'Imposta Cliente-azienda-agente-data inizio-data fine
        If (wks1.Range("E" & y).Value = wks2.Range("B4").Value Or wks2.Range("B4").Value = "") _
        And (wks1.Range("F" & y).Value = wks2.Range("B5").Value Or wks2.Range("B5").Value = "") _
        And (wks1.Range("J" & y).Value = wks2.Range("B6").Value Or wks2.Range("B6").Value = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value = "")) Then
        
        For i = 11 To uriga 'rif. riga inizio dove copiare i dati nel foglio Stat_glob
        
            If wks2.Range("A" & i) = "" Then 'se la colonna A11 è vuota copia:
                wks2.Range("A" & i) = wks1.Range("A" & y)
                wks2.Range("B" & i) = wks1.Range("D" & y)
                wks2.Range("C" & i) = wks1.Range("E" & y)
                wks2.Range("D" & i) = wks1.Range("F" & y)
                wks2.Range("E" & i) = wks1.Range("G" & y)
                wks2.Range("F" & i) = wks1.Range("H" & y)
                wks2.Range("G" & i) = wks1.Range("I" & y)
                wks2.Range("H" & i) = wks1.Range("J" & y)
    
                wks2.Range("G6").FormulaLocal = "=SOMMA(G11:G10000)"
                
                Exit For
            End If
        Next
    End If
    Next
               'chiudi sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               Application.Calculation = xlCalculationAutomatic
               'interrompi Formule nel foglio
               Application.Calculation = xlCalculationManual
               wks2.Range("G7").Value = Time - MyTime
    
    End Sub
    Windows8.1 office 2010

Discussioni Simili

  1. Macro al posto di una tabella pivot
    Di Mcmatt nel forum Domande su Excel VBA e MACRO
    Risposte: 12
    Ultimo Messaggio: 17/03/17, 17:34
  2. Filtrare una pivot
    Di MarcoIpad nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 01/11/16, 09:43
  3. Filtrare una tabella tramite macro 3
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 21
    Ultimo Messaggio: 28/08/16, 14:35
  4. Risposte: 18
    Ultimo Messaggio: 29/07/16, 17:07
  5. Filtrare una tabella pivot tramite macro
    Di kellington90 nel forum Domande su Excel VBA e MACRO
    Risposte: 2
    Ultimo Messaggio: 09/05/16, 03:50

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •