Risultati da 1 a 22 di 22

Discussione: Filtrare una tabella tramite macro 3



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

    Filtrare una tabella tramite macro 3

    Un cordiale saluto a tutti Voi,
    Esigenze lavorative mi costringono a rivedere una macro,egregiamente funzionante, suggerita da Ges e GGratis (che saluto)
    che fa riferimento a una discursione fatta su questo forum (Filtrare una tabella pivot tramite macro 2) qualche tempo fà.
    La macro in questione filtra i dati residenti un un foglio (Archivio o database) li elabora a seconda delle condizioni scelte (tre condizioni: cliente,azienda,agente)
    e li copia in un altro foglio (statistiche).
    La mia esigenza, sorta da qualche giorno, è quella di implementare la macro con altre due condizioni che andrebbero a sommarsi tra loro...
    Le condizioni che la macro deve prendere come riferimento passano da tre a cinque e cioè: cliente,azienda1,agente,azienda2 e azienda3.
    quindi se imposto la ricerca o filtro e seleziono azienda1,azienda2,azienda3 deve aggiungere nella stessa colonna i dati che fanno
    riferimento alle tre o due aziende da esaminare...
    Ovviamente nel mio piccolo ho fatto delle prove senza esito e chiedo agli esperti un aiuto
    senza fare preferenze....... :-) in primis Ges e GGratis.... :-)
    Ringrazio anticipatamente tutti e attendo vostri suggerimenti...
    Allego macro e file in questione:
    Codice: 
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                    
    uriga = wks1.Range("B" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:F" & 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                'wks2.Range("G" & i) = wks1.Range("I" & y)
                'wks2.Range("H" & i) = wks1.Range("J" & y)
    
                wks2.Range("E6").FormulaLocal = "=SOMMA(E11:E10000)"
                'Calculate
                
                Exit For
            End If
        Next
    End If
    Next
     End sub
    N.B. Devo alleggerire il file prima di inserirlo...a presto
    grazie
    Windows8.1 office 2010

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

    Re: Filtrare una tabella tramite macro 3

    Allego File in questione....
    File Allegati File Allegati
    Windows8.1 office 2010

  3. #3

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

    Re: Filtrare una tabella tramite macro 3

    Ciao Vincenzo,
    se ho capito bene vuoi due altre "Aziende" tra i criteri da scegliere per filtrare i dati.

    Ho integrato il codice nelle parti rosse e ho inserito altri due campi in ArchComm (colonna K e L) e in Stat_Glob (colonne G e H)
    Codice: 
    Option Explicit
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                 Application.ScreenUpdating = False
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("B" & 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And (wks1.Range("K" & y).Value2 = wks2.Range("C7").Value2 Or wks2.Range("C7").Value2 = "") _
        And (wks1.Range("L" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C8").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                wks2.Range("G" & i) = wks1.Range("K" & y)
                wks2.Range("H" & i) = wks1.Range("L" & y)
    
    
               ......
    Le due aziende le ho chiamate chiamate nelle colonne K e L con lo stesso nome della prima azienda.

    Fai delle prove e fammi sapere.
    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!

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

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Ciao Vincenzo,
    se ho capito bene vuoi due altre "Aziende" tra i criteri da scegliere per filtrare i dati.

    Ho integrato il codice nelle parti rosse e ho inserito altri due campi in ArchComm (colonna K e L) e in Stat_Glob (colonne G e H)
    Codice: 
    Option Explicit
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                 Application.ScreenUpdating = False
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("B" & 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And (wks1.Range("K" & y).Value2 = wks2.Range("C7").Value2 Or wks2.Range("C7").Value2 = "") _
        And (wks1.Range("L" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C8").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                wks2.Range("G" & i) = wks1.Range("K" & y)
                wks2.Range("H" & i) = wks1.Range("L" & y)
    
    
               ......
    Le due aziende le ho chiamate chiamate nelle colonne K e L con lo stesso nome della prima azienda.

    Fai delle prove e fammi sapere.
    Ciao Ges,
    Grazie per aver risposto alla mia richiesta....
    purtroppo la tua soluzione non và bene in quanto l'archivio commissioni almeno una volta al mese viene
    aggiornato importando altri dati da file esterni e non posso cambiare la struttura.....
    io vorrei se possibile che una volta selezionato l' azienda ( puo essere, una, due o al massimo tre) tutte le commissioni dei clienti (facenti parte dell'azienda o aziende selezionate) vengano inseriti nella colonna C e con la relativa azienda di riferimento nella colonna D ect .....
    nella speranza di aver dato giusta spiegazione
    Saluto e ringrazio ancora....
    Windows8.1 office 2010

  5. #5

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

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da Vincenzo Damiani Visualizza Messaggio
    ...
    io vorrei se possibile che una volta selezionato l' azienda ( puo essere, una, due o al massimo tre) tutte le commissioni dei clienti (facenti parte dell'azienda o aziende selezionate) vengano inseriti nella colonna C e con la relativa azienda di riferimento nella colonna D ect .....
    ..
    .....
    Ciao Vincenzo, avevo capito che ti servivano altre condizioni in aggiunta a quelle che avevi ma dopo quest'ultima precisazione, scusami, ma non ho capito cosa intendi con la tua frase che ho riportato sopra
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. I seguenti utenti hanno dato un "Like"


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

    Re: Filtrare una tabella tramite macro 3

    Ciao Ges,
    scusami se non sono riuscito a spiegare bene quello che intendo ottenere, cerco di spiegarmi meglio....
    attualmente se seleziono l'azienda1 (cella C5) nel foglio Stat_Glob mi cerca l'azienda selezionata e nella colonna C ad iniziare dalla cella C11 mi vengono fuori tutti i clienti che hanno lavorato
    con quell'azienda. Di conseguenza nella colonna D ad iniziare dalla cella D11 trovo solo il nome dell'azienda di cui ho fatto ricerca.
    io vorrei aggiungere la possibilità di cercare sia l'azienda1 (C5) che L'azienda2 (C7) contemporaneamente, se selezionata insieme...
    in questo caso la COLONNA C ad iniziare dalla cella C11 verrà popolata con i clienti sia dell'azienda1 che quelli dell'azienda2 di conseguenza nella colonna D ad iniziare dalla cella D11 troverei i nomi
    delle due aziende selezionate....
    le altre due opzioni di scelta, cliente e agente, rimangono cosi come sono....
    Attendo tuo riscontro
    Grazie ancora
    Windows8.1 office 2010

  8. #7
    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 tramite macro 3

    Ciao Vincenzo,
    Non avevo visto la tua richiesta...
    ma noto che Ges (che saluto) ha già cominciato a darci un'occhiata... proverò a riguardarla anch'io.

    Saluti
    GG

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

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    Ciao Vincenzo,
    Non avevo visto la tua richiesta...
    ma noto che Ges (che saluto) ha già cominciato a darci un'occhiata... proverò a riguardarla anch'io.

    Saluti
    GG
    Grazie mille ggratis per l'aiuto
    Windows8.1 office 2010

  10. #9
    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 tramite macro 3

    Ciao Vincenzo,
    ti ho aggiornato la macro, dovrebbe fare quello che chiedevi...provalo su un file duplicato.

    ti ho corretto anche un indice (in rosso)...
    nel foglio stat_glob hai delle formule che ti vanno in errore, la ragione è da trovare nel fatto che in ArchComm hai del testo nella colonna degli importi (imponibile, iva e totale), ci devi mettere 0 non € -, il campo è formattato e quando ci metti 0 il simbolo dell'euro ed il trattino lo mette automaticamente ma in questo modo le formule non ti vanno in errore (aiutati selezionando le colonne e facendo un cerca sostituisci tutti i valori).
    Poi ho visto che non ti funziona bene la convalida nelle celle Stat_Glob!C4:C8...

    Inoltre, ti consiglio di cancellare la parte di codice associato all'evento worksheet_change del foglio sta_glob, tanto hai inserito il tasto filtra statistiche, puoi fare con quello...


    Codice: 
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("B" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:F" & uriga) = ""
    For y = 3 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
        Or (wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks2.Range("C7").Value2 = "") _
        Or (wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C8").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                'wks2.Range("G" & i) = wks1.Range("I" & y)
                'wks2.Range("H" & i) = wks1.Range("J" & y)
    
    
                wks2.Range("E6").FormulaLocal = "=SOMMA(E11:E10000)"
                'Calculate
                
                Exit For
            End If
        Next
    End If
    Next
               'ripristina l'aggiornamento dello shermo sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               Application.Calculation = xlCalculationAutomatic
       
               'Attiva macro:
               Call EliminaDuplicatiClienti_Stat_Glob
    End Sub
    Il codice poi non è pulitissimo, d'altra parte i suggerimenti vanno presi sempre come spunti di analisi per i propri lavori ;)...

    se il risultato filtrato lo vuoi per blocco ditte, effettua prima l'ordinamento (per ditte) nel foglio ArcComm.

    fai sapere

    saluti
    gg

  11. #10
    L'avatar di Powerwin
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Milano
    Messaggi
    1404
    Versione Office
    2016 - 2010
    Likes ricevuti
    194
    Likes dati
    71

    Re: Filtrare una tabella tramite macro 3

    Codice: 
    For y = 3 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
    '    And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
    '    Or (wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks2.Range("C7").Value2 = "") _
    '    Or (wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C8").Value2 = "") _
    '    And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
    '    And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
    '    And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value2 = "")) Then
        
    '    If (wks1.Range("E" & y).Value2 = wks2.Range("C4").Value2 Or wks2.Range("C4").Value2 = "") _
    '    And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") _
    '    And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
    '    And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
    '    And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value2 = "")) Then
    
    
        If (wks1.Range("E" & y).Value2 = wks2.Range("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks2.Range("C5").Value2 = "") & (wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks2.Range("C7").Value2 = "") & (wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C8").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value2 = "")) Then
        
    '    If (wks1.Range("E" & y).Value2 = wks2.Range("C4").Value2 Or wks2.Range("C4").Value2 = "") _
    '    And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2) _
    '    And (wks2.Range("C5").Value2 = "" Or wks2.Range("C7").Value2 = "" Or wks2.Range("C8").Value2 = "") _
    '    And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
    '    And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
    '    And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value2 = "")) Then
    Azz avevo provato pure io ieri questa soluzione insieme ad altre ma non mi funzionava devo prendermi le ferie
    Avvisi generali e importanti, pena CHIUSURA thread e/o BAN. Il crossposting è vietato. Le richieste di "pappa pronta" sono vietate. Utilizzate i tag CODE per il codice. Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.



  12. #11
    L'avatar di Powerwin
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Milano
    Messaggi
    1404
    Versione Office
    2016 - 2010
    Likes ricevuti
    194
    Likes dati
    71

    Re: Filtrare una tabella tramite macro 3

    Ho provato ma non mi funziona ancora, inoltre ho trovato un altro piccolo errore che ti evidenzio

    Codice: 
    Sub VaiaGestionale_Da_Stat_Glob()'
        'interrompi Formule nel foglio
        Application.Calculation = xlCalculationManual
        'evita sfarfallio foglio
        Application.ScreenUpdating = False
        
         'cancello i dati contenuti nelle celle:
        Range("C4,C5,C6,C7,C8").ClearContents  ' da aggiungere
        'cancello i dati contenuti nella colonna A ad iniziare da A11
        Range("A11:A" & Rows.Count).ClearContents
        Range("B11:B" & Rows.Count).ClearContents
        Range("C11:C" & Rows.Count).ClearContents
        Range("D11:D" & Rows.Count).ClearContents
        Range("E11:E" & Rows.Count).ClearContents
        Range("F11:F" & Rows.Count).ClearContents
        Range("I11:I" & Rows.Count).ClearContents
        Range("P11:P" & Rows.Count).ClearContents
        Range("W11:W" & Rows.Count).ClearContents
        'Range("G6").ClearContents
        
        'chiudi sfarfallio foglio
        Application.ScreenUpdating = True
        'calculate
        'Attiva calcolo formule in automatico
        Application.Calculation = xlCalculationAutomatic
        'interrompi Formule nel foglio
        Application.Calculation = xlCalculationManual
    
    
        'Sheets("Gestionale").Select
    End Sub
    Avvisi generali e importanti, pena CHIUSURA thread e/o BAN. Il crossposting è vietato. Le richieste di "pappa pronta" sono vietate. Utilizzate i tag CODE per il codice. Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.



  13. #12
    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 tramite macro 3

    hai ragione powerwin, non funziona...

  14. #13

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da Vincenzo Damiani Visualizza Messaggio
    La macro in questione filtra i dati residenti un un foglio (Archivio o database) li elabora a seconda delle condizioni scelte (tre condizioni: cliente,azienda,agente)
    Ciao,

    scusa se mi intrometto, ma io nel file che hai allegato non trovo nessuna traccia di "cliente" e di "agente"; né nel foglio archivio, né nel foglio della statistica trovo dove impostare questi parametri (c'è solo Azienda) .....
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  15. #14
    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 tramite macro 3

    ecco, così dovrebbe funzionare...

    Codice: 
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("B" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:F" & uriga) = ""
    For y = 3 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                'wks2.Range("G" & i) = wks1.Range("I" & y)
                'wks2.Range("H" & i) = wks1.Range("J" & y)
    
    
                wks2.Range("E6").FormulaLocal = "=SOMMA(E11:E10000)"
                'Calculate
                
                Exit For
            End If
        Next
    End If
    Next
               'ripristina l'aggiornamento dello shermo sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               Application.Calculation = xlCalculationAutomatic
       
               'Attiva macro:
               Call EliminaDuplicatiClienti_Stat_Glob
    End Sub

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

    Re: Filtrare una tabella tramite macro 3

    Grazie Powerwin
    Windows8.1 office 2010

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

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da scossa Visualizza Messaggio
    Ciao,

    scusa se mi intrometto, ma io nel file che hai allegato non trovo nessuna traccia di "cliente" e di "agente"; né nel foglio archivio, né nel foglio della statistica trovo dove impostare questi parametri (c'è solo Azienda) .....
    Ciao Scossa,
    le condizioni sono nelle celle C4:C8 del foglio Stat_Glob e sono delle celle con convalida dati
    Grazie
    Windows8.1 office 2010

  18. #17

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1022
    Versione Office
    .
    Likes ricevuti
    366
    Likes dati
    0

    Re: Filtrare una tabella tramite macro 3

    Ciao,scusami, evidentemente avevo aperto un file precedente.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

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

    Re: Filtrare una tabella tramite macro 3

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    ecco, così dovrebbe funzionare...

    Codice: 
    Sub filtraStatistiche()
    'Ges modificata da ggratis
    Dim wks1 As Worksheet, wks2 As Worksheet, uriga As Long, y As Long, i As Long
    Set wks1 = Worksheets("ArchComm")
    Set wks2 = Worksheets("Stat_Glob")
                  
                 'interrompi Formule nel foglio
                 Application.Calculation = xlCalculationManual
                 'evita sfarfallio foglio
                 Application.ScreenUpdating = False
        
    uriga = wks1.Range("B" & Rows.Count).End(xlUp).Row
    wks2.Range("A11:F" & uriga) = ""
    For y = 3 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("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C5").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") 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) = "" 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("I" & y)
                wks2.Range("F" & i) = wks1.Range("J" & y)
                'wks2.Range("G" & i) = wks1.Range("I" & y)
                'wks2.Range("H" & i) = wks1.Range("J" & y)
    
    
                wks2.Range("E6").FormulaLocal = "=SOMMA(E11:E10000)"
                'Calculate
                
                Exit For
            End If
        Next
    End If
    Next
               'ripristina l'aggiornamento dello shermo sfarfallio foglio
               Application.ScreenUpdating = True
               'Attiva calcolo formule in automatico
               Application.Calculation = xlCalculationAutomatic
       
               'Attiva macro:
               Call EliminaDuplicatiClienti_Stat_Glob
    End Sub
    Ciao ggratis,
    l'ultimo codice (post #14) risponde a quanto da me richiesto e per questo ti ringrazio tantissimo....
    ti chiedo, se possibile, perfezionare alcune cose...se inserisco solo l'azienda1 mi da il risultato richiesto.....se inserisco azienda1+azienda2...ok ...... se inserisco azienda1+azienda2+azienda3....ok.
    se invece inserisco solo azienda2 o solo azienda3 il risultato è errato in quanto mi richiama tutte le aziende e non soltanto l'azienda2o3 di cui cerco i dati....
    spero di aver spiegato bene le cose...
    in attesa
    ringrazio ancora tutti coloro che sono intervenuti.....
    Windows8.1 office 2010

  20. #19
    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 tramite macro 3

    ...la stiamo facendo a rate questa condizione
    Codice: 
        If (wks1.Range("E" & y).Value2 = wks2.Range("C4").Value2 Or wks2.Range("C4").Value2 = "") _
        And (wks1.Range("F" & y).Value2 = wks2.Range("C5").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C7").Value2 Or wks1.Range("F" & y).Value2 = wks2.Range("C8").Value2 Or wks2.Range("C5").Value2 = "" And wks2.Range("C7").Value2 = "" And wks2.Range("C8").Value2 = "") _
        And (wks1.Range("J" & y).Value2 = wks2.Range("C6").Value2 Or wks2.Range("C6").Value2 = "") _
        And ((wks1.Range("D" & y) >= wks2.Range("B2") Or wks2.Range("B2").Value2 = "") _
        And (wks1.Range("D" & y) <= wks2.Range("B3") Or wks2.Range("B3").Value2 = "")) Then
    ...vabbene, così impari
    non ti funziona bene la convalida nelle celle C4-C8 ma il filtro così dovrebbe andare!
    saluti
    gg

  21. #20

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

    Re: Filtrare una tabella tramite macro 3

    Ciao Vincenzo e un saluto a Giuseppe e agli altri che sono intervenuti qui.

    Vedendo la modifica fatta adesso ho capito bene la tua richiesta che mi pare sia stata risolta da Giuseppe.

    Io mi sono limitato ad alcuni piccoli - ma spero utili - miglioramenti.

    Innanzitutto vedo però che hai messo delle strane convalide dati - premetto che non mi sono guardato bene tutte le funzioni ma sicuramente avrai avuto i tuoi motivi, però nel caso non fosse così te le ho semplificate con la funzione SCARTO:

    =SCARTO(ElencoClienti!$A$4;;;CONTA.VALORI(ElencoClienti!$A$4:$A$1000)+1)

    Ho messo +1 in modo da lasciarti uno spazio vuoto nella convalida se si vuole non considerare più quella scelta fatta.

    Inoltre ho previsto un pulsante che svuota le voci di convalida ... credo che ce ne sia bisogno per ricercare altri dati.

    Ti allego il file.
    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!

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

    Re: Filtrare una tabella tramite macro 3

    Ciao Ggratis,
    Ciao Ges,

    Farò tesoro dei vostri consigli .....adesso funziona tutto perfettamente....
    siete FANTASTICI
    provo a studiare il codice
    Grazie alla prossima
    Windows8.1 office 2010

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

    Re: Filtrare una tabella tramite macro 3

    Un saluto a tutti voi,
    Con l'ultima richiesta fatta e da voi risolta, pensavo di aver portato al termine il mio piccolo gestionale. Illusione!
    Dopo approfondite verifiche mi sono accorto che i conti non tornano.
    Ho trascorso parecchie ore a cercare di risolvere il problema che inizialmente pensavo poter risolvere con le mie conoscenze di Excel, ma niente da fare.
    Devo fare una somma (colonna L) riferita a un determinato cliente che varia a secondo del variare di alcune condizione presenti nelle celle C4:C8 (convalida dati).
    Per chi non ha seguito la discussione cerco di spiegare come funziona il programma.
    Al variare delle condizioni (C4:C8) e date, il VBA filtra i dati presenti in archivio e li copia nel foglio statistiche colonne A:F..
    Nella colonna I a sua volta vengono inseriti i dati univoci (con VBA) estratti dalle colonne A:F precedentemente filtrati
    A questo punto la colonna j somma i dati con delle formule relativi alla colonna I e la colonna L somma i dati dell'anno precedente prendendoli dall'archivio....
    Il problema sta nel fatto che i dati presenti nella colonna L non si aggiornano in maniera corretta con il variare delle condizioni presenti nelle celle (C4:C8).
    Potete aiutarmi?
    Spero di aver chiarito il mio problema.
    Con VBA va benissimo anche se preferisco le formule....nel caso lo posto anche in Excel generale...
    Saluto e ringrazio anticipatamente.....
    Il file è lo stesso.....
    Vincenzo
    Windows8.1 office 2010

Discussioni Simili

  1. Estrarre da una tabella risultati tramite 2 menu a tendina.
    Di svizzera nel forum Domande su Excel in generale
    Risposte: 4
    Ultimo Messaggio: 25/01/17, 14:14
  2. [Risolto] Estrarre un testo da una stringa di una tabella tramite query, e poi creare una nuova tabella
    Di ProgrammD69 nel forum Domande su Microsoft Access
    Risposte: 11
    Ultimo Messaggio: 05/09/16, 10:21
  3. Filtrare una tabella pivot tramite macro 2
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 37
    Ultimo Messaggio: 21/05/16, 15:12
  4. 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
  5. Inserisci dati in tabella tramite userform
    Di nick0573 nel forum Domande su Excel VBA e MACRO
    Risposte: 25
    Ultimo Messaggio: 18/03/16, 23:06

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
  •