Filtro dati con varie condizione



  • Filtro dati con varie condizione
    di nichicanta data: 23/07/2014 13:53:26

    Buongiorno carissimi amici è con immenso piacere che ritorno a chiedere il vostro prezioso aiuto per la realizzazione di un file pdf che è frutto di varie modalità di filtro eseguito sul foglio chiamato SPESE VARIE sul fiel che allego e che si chiama NICHI.
    In realtà dovrei eseguire varie modalità di filtro su quel foglio in base ai vari CheckBox1 selezionati.
    2) visualizzare i dati filtrati sulla listbox inserita nella Userform1;
    3) solo alla pressione del tasto PUBBLICA PDF dovrei realizzare il file con i dettagli (spuntati e filtrati)e l'ammontare complessivo delle spese sostenute dai vari condomini.
    P.S. non desidero che mi facciate voi tutto il lavoro richiesto, ciò che vi chiedo è soprattutto l'aito nella creazione del file pdf (ottenuto penso da una tabella pivot che filtra i vari dati) e l'indicazione di come lavorare per poter applicare il filtro su più colonne ( in base alle varie opzioni spuntate sulla userfom)
    Grazie per l'aiuto che vorrete darmi indicandomi la strada da seguire.



  • di nichicanta data: 23/07/2014 13:57:59

    Preciso che la pagina della Userform1 sulla quale occorre lavorare è la pagina chiamata FILTRA DATI e non le altre poichè le ho gia completate in base alle mie esigenze.
    Vi saluto.



  • di Raffaele_53 (utente non iscritto) data: 23/07/2014 23:04:56

    Dico solo una cosa?
    Una persona inesperta di PC, come fà a chiudere il Tuo files?
    Ho fatto fatica senza spegnere il PC
    Ti ho dato solo un suggerimento, poi fai come desideri



  • di nichicanta (utente non iscritto) data: 28/07/2014 08:32:36

    Ciao Raffaele_53, scusatemi per eventuali anomalie o problematiche legate al file allegato.
    Ho sistemato il tutto, ho creato un pulsante che apre la userform1 e sul pulsante CHIUDI la funzione che chiude la maschera e lascia il foglio di lavoro attivo.
    Buona giornata a tutti.

    P.S. il file l'ho rinominato e allegato con lo stesso nome "NICHI"



  • di nichicanta (utente non iscritto) data: 28/07/2014 08:35:35

    Riallego il file chiamato NICHI1 poichè non me lo sovrascrive con lo stesso nome NICHI.



  • di lepat (utente non iscritto) data: 28/07/2014 11:34:36

    Ho visto il tuo file, quando vuoi risolvere un problema esponi soltanto quello altrimenti la gente si spaventa e passa oltre



  • di nichicanta (utente non iscritto) data: 28/07/2014 12:00:19

    Ciao Lepat è quello che ho fatto stavolta, se tu ricordi avevo dato un altro nome al quesito ed ho ottenuto quanto tu evidenzi (la difficoltà degli altri amici del forum a capire la mia esigenza, la impostavo male io sin dall'iinizio).
    Comunque con questo quesito non chioedo altro che il vostro aiuto su come poter filtrare dati con più criteri e la relativa stampa in pdf, l'ho vosto fare per altri utenti da Grograman ed altri esperti di questo forum.
    Attendo Vostre comunicazioni e confido (come è avvenuto fin ad oggi) nella vostra competenza e nel Vostro prezioso aiuto.
    Vi ringrazio sempre per quello che fate per noi meno esperti di VBA.
    Ciao lepat, apresto.



  • di lepat (utente non iscritto) data: 28/07/2014 12:16:54

    non mi sono spiegato bene, indendevo allega un file meno complicato, con soltanto codice e userform da esaminare, altrimenti uno si sperde



  • di nichicanta (utente non iscritto) data: 28/07/2014 12:31:37

    Fatto, allego il file chiamato NICHI2 con le varie opzioni di filtro dati, spero sia più intuitivo far capire ciò che desidero ottenere.
    Resto in attesa di vostri ulteriori chiarimenti circa il mio quesito.
    Grazie ancora lepat, a presto.



  • di lepat (utente non iscritto) data: 28/07/2014 12:56:14

    ma c'è da fare tutto, almeno la visualizzazione senza filtri la potevi fare.



  • di nichicanta (utente non iscritto) data: 28/07/2014 13:31:05

    Lepat quello che c'è da fare è il filtro con le tre opzioni (poichè sul codice da voi creato proseguo io per le altre opzioni, magari solo chiedendovi, all'occorrenza qualche altra delucidazione). Cioè, alla spunta dei tre CheckBox ( o tutti e tre oppure singolarmente)chiamati TUTTI I CONDOMINI, TUTTE LE SPESE E TUTTE LE DATE INSERITE attivare i filtri e stampare in pdf i relativi dati, come il risultato che viene fuori con una tabella pivot.
    Grazie ancora.



  • di lepat (utente non iscritto) data: 28/07/2014 16:02:28

    per verificare che le spunte dei CheckBox funzionano occorre le le combo siano popolate e nel tuo file manca tutto



  • di nichicanta (utente non iscritto) data: 28/07/2014 16:37:53

    Ciao lepat ho popolato le combobox con i dati d'interesse, vedi se cosi va bene.
    Il file che allego è NICHI2(con la speranza che lo sovrascriva al vecchio), diversamente riallego con nuovo nome.
    Grazie per il tuo gentile interessamento.



  • di nichicanta (utente non iscritto) data: 29/07/2014 08:33:31

    Il file NICHI2 è stato allegato regolarmente, chiedo il vostro prezioso aiuto per definire queste funzioni dopodichè il lavoro è completo.
    Buongiorno a tutti gli amici del forum.



  • di Raffaele_53 (utente non iscritto) data: 29/07/2014 21:45:50

    Premesso che Non desidero mai lavorare su userform (soppratutto a schermo pieno senza bottoni di chiusura).
    Il fatto che siano più carine da vedere, fa si che per provare ogni volta il codice si diventa matti.
    Comunque un qualsiasi codice VBA si potrebbe adattarlo all'userform stessa.

    Premesso che forse non ho capito cosa desideri.
    Premesso che non capisco a cosa servono le CheckBox (presumo che vuota siano per tutti i dati, se selezionata la combobox valga solo per il dato scritto)
    Pertanto le CheckBox non le ho neppure calcolate.
    Questa credo che faccia quello che desideri (files Nichi2).

    Per quanto riguarda il PDF, personalmente uso una procedura senza bisogno di software.
    Credo che puoi filtrare i dati sul foglio stesso con le Tre opzioni e poi stamparlo
     
    Option Explicit
        Dim sh As Worksheet
        Dim lRiga As Long, lCont As Long, lng As Long
    Private Sub CommandButton37_Click()
    'bottone creato per chiudere l'userform
     UserForm1.Hide
    End Sub
    
    Private Sub UserForm_Initialize()
    UserForm1.ComboBox7.RowSource = "CONDOMINI!a1:a30"
    UserForm1.ComboBox8.RowSource = "TIPOSPESA!a1:a30"
    UserForm1.ComboBox9.RowSource = "SPESE!d2:d30"
    
    
        Set sh = ThisWorkbook.Worksheets("Spese")
        lRiga = sh.Range("A" & Rows.Count).End(xlUp).Row
    
        With Me.ListBox2
            ListBox2.Clear
            lCont = 0
            .ColumnCount = 7
            For lng = 2 To lRiga
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
            Next lng
        End With
    
        Set sh = Nothing
    End Sub
    Private Sub CommandButton32_Click()
        Set sh = Worksheets("Spese")
        lRiga = sh.Range("A" & Rows.Count).End(xlUp).Row
        With Me.ListBox2
            ListBox2.Clear
            .ColumnCount = 7
            lCont = 0
            For lng = 2 To lRiga
                '1
                If sh.Cells(lng, 1) = ComboBox7.Value And ComboBox8.Value = "" And ComboBox9.Value = "" Then
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                'End If
                '2
                ElseIf sh.Cells(lng, 1).Value = ComboBox7.Value And sh.Cells(lng, 2).Value = ComboBox8.Value And ComboBox9.Value = "" Then
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                'End If
                '3
                ElseIf sh.Cells(lng, 1).Value = ComboBox7.Value And sh.Cells(lng, 2).Value = ComboBox8.Value And sh.Cells(lng, 4).Value = ComboBox9.Value Then
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                'End If
                '4
                ElseIf ComboBox7.Value = "" = "" And sh.Cells(lng, 2).Value = ComboBox8.Value And ComboBox9.Value = "" Then
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                'End If
                '5
                ElseIf ComboBox7.Value = "" And sh.Cells(lng, 2).Value = ComboBox8.Value And sh.Cells(lng, 4).Value = ComboBox9.Value Then
                      .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                '6
                ElseIf ComboBox7.Value = "" And ComboBox8.Value = "" And sh.Cells(lng, 4).Value = ComboBox9.Value Then
                    .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                'End If
                '7
                ElseIf sh.Cells(lng, 1).Value = ComboBox7.Value And ComboBox8.Value = "" And sh.Cells(lng, 4).Value = ComboBox9.Value Then
                     .AddItem
                    .List(lCont, 0) = sh.Range("A" & lng).Value
                    .List(lCont, 1) = sh.Range("B" & lng).Value
                    .List(lCont, 2) = sh.Range("C" & lng).Value
                    .List(lCont, 3) = sh.Range("D" & lng).Value
                    .List(lCont, 4) = sh.Range("E" & lng).Value
                    .List(lCont, 5) = sh.Range("F" & lng).Value
                    .List(lCont, 6) = sh.Range("G" & lng).Value
                    lCont = lCont + 1
                Else
                End If
            Next lng
        End With
            If lCont = 0 Then MsgBox "Nessun record trovato" Else MsgBox "fatto"
        Set sh = Nothing
    
    End Sub



  • di nichicanta (utente non iscritto) data: 30/07/2014 08:47:06

    Buongiorno Raffaele_53, innanzitutto grazie infinite per la tua disponibilità ad aiutarmi.
    I vari CheckBox li ho dovuti creare per poter avere varie opzioni di filtro dati (questo mi è necessario per come ho impostato io il programma di gestioen condomini)
    Questo che tu dici mi occorre in realtà ed è giusto:Premesso che non capisco a cosa servono le CheckBox (presumo che vuota siano per tutti i dati, se selezionata la combobox valga solo per il dato scritto).
    cit:Per quanto riguarda il PDF, personalmente uso una procedura senza bisogno di software.
    Il necessito di relaizzare il pdf dopo aver selezionato e filtrato i dati di mio interersse poichè lo inviuo via e-mail ai diretti interessati.
    Il tuo codice l'ho inserito nel pulsante di comando sulla userfom e pur selezionando una voce dalle tre ComboBox mi dice "Nessun record trovato"., dove sbaglio.
    Raffaele_53, per favore potresti abbinare il tuo codice scegliendo varie opzioni di filtro dati e poi stamparli in pdf?.
    Se ciò è molto laborioso dammi qualche indizio o suggerimento per poter creare io qualche passaggio e cosi darti una mano a rendere la mia richiesta più veloce e facile da realizzare.
    Grazie ancora e buona giornata.
    P.S. riallego il file NICHI2 su cui ho operato e impostato il tuo codice.



  • di nichicanta (utente non iscritto) data: 30/07/2014 08:58:29

    Non mi sovrascrive il file lo riallego con il nome NICHI3.



  • di gaetanopr data: 30/07/2014 20:41:35

    Ciao a tutti, ho utilizzato un filtro avanzato per il funzionamento della macro, ho definito un'area criteri "M1:S2" i dati filtrati vengono ricopiati nell'area "V1:AB"
    in seguito viene popalata la listbox e creato il file in pdf.
    Naturalmente puoi modificare sia l'area dei criteri che l'area di output
    I tre CheckBox abilitano/disabilitano i combobox di riferimento, quindi se per esempio si abilita il CheckBox (TUTTI I CONDOMINI) di conseguenza il combo per la scelta di questi viene disabilitato.
    Gli altri CheckBox(SINGOLI) non servono.
    Dovresti sistemare il codice che popola i 3 combo in modo da popolarli con dati univoci, è inutile popolare un combobox con 20 date stesse o ripetere per 20 volte solo 4 condomini, ma a questo puoi pensarci tu.
    Spero di aver interpretato bene la tua richiesta
    Devi cambiare il percorso del salvataggio del file
    Allego file Gaetanopr
     
    Option Explicit
    
    Private Sub CheckBox1_Click()
      If CheckBox1.Value = True Then
         ComboBox7.Value = ""
         ComboBox7.Enabled = False
      Else
         ComboBox7.Enabled = True
      End If
    End Sub
    
    Private Sub CheckBox5_Click()
      If CheckBox5.Value = True Then
         ComboBox8.Value = ""
         ComboBox8.Enabled = False
      Else
         ComboBox8.Enabled = True
      End If
    End Sub
    
    Private Sub CheckBox6_Click()
      If CheckBox6.Value = True Then
         ComboBox9.Value = ""
         ComboBox9.Enabled = False
      Else
         ComboBox9.Enabled = True
      End If
    End Sub
    
    Private Sub CommandButton32_Click()
      Dim LastRow As Long, i As Long
      Application.ScreenUpdating = False
      
    With Worksheets("SPESE")
            Rem Compilo l'Area dei Criteri per il filtro avanzato
           .Range("M2").Value = ComboBox7.Value  'Condomini
           .Range("N2").Value = ComboBox8.Value  'TIPOLOGIA DI SPESA
           .Range("R2").Value = ComboBox9.Value  'Data
           If ComboBox9.Value <> "" Then .Range("R2").Value = Format(ComboBox9.Value, "mm/dd/yyyy") Else .Range("R2").Value = ""
            Rem Cancello precedenti filtri
           .Range("V1").CurrentRegion.Clear
           Rem Filtro i dati
            LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
           .Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("Criteri"), CopyToRange:=.Range("V1").CurrentRegion, Unique:=False
        
       Rem popolo la listBox con i dati filtrati
       LastRow = .Cells(Rows.Count, "V").End(xlUp).Row
       With ListBox2
           .ColumnHeads = True
           .ColumnCount = 7
           .RowSource = "=SPESE!V2:AB" & LastRow
           .MultiSelect = 1 'fmMultiSelectSingle
           .TextColumn = 1
           .BoundColumn = 0
           .ListStyle = 1
        End With
    
           .Range("V1:AB" & LastRow).Select
            Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:Documents and SettingsAdministratorDesktopNICHI3.pdf", Quality:= _
            xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
            
      Application.ScreenUpdating = True
      
      End With
    End Sub



  • di Gaetanopr (utente non iscritto) data: 30/07/2014 20:55:22

    Mi sono accorto solo dopo.... del tasto PUBBLICA PDF..
    Se tutto è ok ci vuole poco a separare la macro in due



  • di Raffaele_53 (utente non iscritto) data: 30/07/2014 21:53:56

    Intanto saluto Gaetanopr che da tempo non leggo (ciao)

    1) La combobox7 funzionava
    2) La combobox8 non funzionava quasa errore in ...
    >>>'4
    >>>ElseIf ComboBox7.Value = "" = "" And sh.Cells(lng, 2).Value = ComboBox8...togliere il doppio (= "")
    3) La combobox9 non funzionava. La data non viene riconosciuta???
    Comunque assegnando una variabile alla data funzionava

    @ Gaetanopr
    Complimenti per aver capito tutte le necessità e risolto. Io non ho ancora capito che cavolo servono le CheckBox.
    Per estrare dalla Listbox le righe selezionate (ci riuscivo solo per le righe, mà non per gli altri dati in colonna). Se puoi mi faresti un esempio?


     
    Private Sub CommandButton33_Click()
    Dim n As Long, i As Long, c As Long, l As Long
    lCont = 0
    Sheets("PDF").Range("A4:G1000").ClearContents
     n = ListBox2.ListCount - 1
     c = 7
     For i = 0 To n
     ListBox2.ListIndex = i
        For l = 1 To c
            Sheets("pdf").Cells(i + 2, 1) = ListBox2.List(ListBox2.ListIndex(c))
        Next l
     Next i
     End Sub



  • di gaetanopr data: 30/07/2014 22:57:33

    Ciao Raffaele, effettivamente era un bel pò che non scrivevo.
    Se ho capito bene vorresti riportare nel foglio "PDF" i dati filtrati nella listbox o sbaglio?

    Prova in questo modo
     
    Private Sub CommandButton33_Click()
    Dim n As Long
    Sheets("PDF").Range("A2:G1000").ClearContents
    n = ListBox2.ListCount + 1
    Sheets("PDF").Range("A2:G" & n) = ListBox2.List
    End Sub
    



  • di raffaele_53 (utente non iscritto) data: 31/07/2014 03:31:42

    @gaetanopr
    Chiedevo come "archiviare" i dati della Listbox
    Riesco a farlo nelle righe, ma non nelle colonne

    Ho provato il Tuo codice "ma forse sbaglio" ma non esegue nulla???



  • di gaetanopr data: 31/07/2014 07:46:21

    @raffaele_53
    cit"Riesco a farlo nelle righe, ma non nelle colonne "
    Commetti un paio di errori
    cambia
    Sheets("pdf").Cells(i + 2, 1) = ListBox2.List(ListBox2.ListIndex(c))

    con questo
    Sheets("pdf").Cells(i + 2, l) = ListBox2.List(i, l - 1)
    Nella colonna ad esempio hai indicati 1 e non "l"

    Comunque la macro che ho postato prima a me funziona ti allego il file Gaetanopr1



  • di nichicanta (utente non iscritto) data: 31/07/2014 08:54:40

    Buongiorno carissimi amici, un ringraziamento iniziale a Raffaele_53 e gaetanopr per il loro prezioso aiuto e interessamento.
    Gaetanopr, provvedo ad eliminare gli altri due CheckBox(SINGOLI) che non servono.
    Ho notato sul tuo ultimo file allegato che in fase di pubblicazione del pdf dei dati filtrati non sempre mi prende le intestazioni di colonna del foglio SPESE e con il CheckBox SINGOLE SPESE spuntato, mi ricopia due volte le intestazioni di colonna. Si potrebbe eliminare il foglio di appoggio chiamato pdf dopo aver pubblicato il file pdf in modo da crearlo solo all'occorrenza?
    Grazie ancora per il vostro prezioso contributo e la vostra preparazione.



  • di nichicanta (utente non iscritto) data: 31/07/2014 08:56:44

    gaetanopr, altra segnalazione, in fase di pubblicazione del file pdf le date non vengono visualizzate nel modo corretto bensi in questo modo:41830-41831 ecc. cosa è sbagliato.



  • di gaetanopr (utente non iscritto) data: 31/07/2014 09:05:00

    cit"in fase di pubblicazione del file pdf le date non vengono visualizzate nel modo corretto bensi in questo modo:41830-41831 ecc. cosa è sbagliato."
    per questo ti basta formattare la colonna che contiene le date nel foglio "pdf" come data e si sistema
    Il foglio pdf era solo un esempio per raffaele, infatti nel mio primo allegato non c'è.
    Per le altre cose più tardi darò un'occhiata e ti faccio sapere



  • di nichicanta (utente non iscritto) data: 31/07/2014 09:11:51

    Grazie gaetanopr, che piacere vedervi disponibili sul forum ad aiutarci e a trasmetterci la vostra bravura e professionalità.
    Stiamo crescendo piano piano grazie al vostro contributo, ad oggi ho imparato cose nuove e riesco a muovere i primi passi in autonomia per semplici codici e funzioni.



  • di gaetanopr data: 31/07/2014 13:24:30

    Cit:"non sempre mi prende le intestazioni di colonna del foglio SPESE e con il CheckBox SINGOLE SPESE spuntato"
    Ora dovrebbe andare bene, ho sostituito le 3 checkbox singole con delle etichette, volendo non sono necessarie nemmeno le tre rimaste in quanto se non vengono effettuate scelte tramite i combobox vengono ripresi tutti i records
    Ho eliminato il foglio di appoggio pdf, tutto avviene nel foglio SPESE, naturalmente puoi modificare sia l'area dei criteri che l'area dove vengono attualmente ricopiati i records filtrati
    allego file Gaetanopr2



  • di nichicanta (utente non iscritto) data: 31/07/2014 13:48:54

    Grazie ancora gaetanopr, ho aggiunto questo nella ComboBox9 poichè la visualizzazione delle date era errata:
    Private Sub ComboBox9_Change()
    Me.ComboBox9 = CDate(ComboBox9.Value)
    End Sub
    Per tutto il resto va benissimo, da solo provvedo a prelevare i datio univoci nelle Combobox come da te suggerito poco fa.




  • di gaetanopr data: 31/07/2014 14:13:01


    Una dimenticanza, in caso dopo aver filtrato dei dati si procede con un altro filtro da dove non si producono records la listbox rimane popolate con il precedente filtro quindi dobbiamo in questo caso ripulirla quindi aggiungi questa riga prima del
    MsgBox "Non ci sono dati per i criteri indicati"
    quindi diventa
     
    ListBox2.RowSource = ""
    MsgBox "Non ci sono dati per i criteri indicati"



  • di nichicanta (utente non iscritto) data: 31/07/2014 14:27:59

    Gaetanopr nel trasferire vil tuo codice sul mio foglio di lavoro mi compare questo errore alla riga:.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("Criteri"), CopyToRange:=.Range("V1").CurrentRegion, Unique:=False

    da cosa dipende non riesco a capire, non ho fatto altro che copiare tutto nel foglio mio senza lcuna modifica.
    Fammi sapere per favore, grazie
    P.S. ho aggiunto anche il tuo ultimo codice.



  • di nichicanta (utente non iscritto) data: 31/07/2014 14:32:13

    Gaetanopr il messaggio di errore è questo: Errore di run-time "1004" errore definito dall'applicazione o dall'oggetto.



  • di gaetanopr data: 31/07/2014 14:43:07

    Secondo me non hai definito l'area criteri per le celle SPESE!$M$1:$S$2



  • di gaetanopr data: 31/07/2014 14:44:45

    Criteri con la C maiuscola come nella macro

    CriteriaRange:=.Range("Criteri"), CopyToRange:=.Range("V1").CurrentRegion, Unique:=False



  • di mb (utente non iscritto) data: 31/07/2014 14:54:10

    scusate il disturbo

    ho visto con molto interesse questa discussione, chiedo cortesemente a Gaetano nel tuo 2 file ci sono le ceckbox, che poi come spieghi non sono abbinate a nessuna procedura.. (OK)
    mi spieghi per capire meglio come rientrano nella listbox2

    grazie e scusate l'intrusione




  • di nichicanta (utente non iscritto) data: 31/07/2014 15:53:12

    Ciao gaetanopr ti allego il file chiamato NICHI4, gli puoi dare tu un' occhiata per favore, poichè non riesco a capire l'errore che mi viene fuori, sto andando in tilt, ho copiato tutto quanto anche il tuo foglio di lavoro ma niente stesso problema. Grazie ancora.



  • di gaetanopr data: 31/07/2014 16:17:53

    @mb per adesso non ho tempo ma più tardi ti spiego il funzionamento della macro

    @nichi ho scaricato il file ma in questo pc ho una versione vecchia di excel e mi sembra che tu non abbia definito l'area Criteri con le celle M1:S2
    Quindi seleziona quest'area e sulla casella del nome digita Criteri, fai sapere in caso negativo stasera controllo meglio



  • di nichicanta (utente non iscritto) data: 31/07/2014 16:32:39

    Ciao gaetanopr ho selezionato il range (M1:S2) ho definito il nome con Criteri ma non va non capisco.
    Quando hai tempo ( senza fretta fammi capire per favore dove sbaglio).
    A presto gaetanopr, grazie infinite.



  • di gaetanopr data: 31/07/2014 19:24:54

    cit:"Ciao gaetanopr ho selezionato il range (M1:S2) ho definito il nome con Criteri ma non va non capisco."
    Già il nome lo avevi definito in maniera errata quindi per correggerlo dovevi andare su gestione nomi ed effettuare la modifica, infatti se provi a selezionare l'area M1:S2 ti accorcerai che nella casella del nome ti figura solo M1 e non "Criteri"
    rialeggo NICHI5



  • di gaetanopr data: 31/07/2014 19:50:44

    CIT:mb "ho visto con molto interesse questa discussione, chiedo cortesemente a Gaetano nel tuo 2 file ci sono le ceckbox, che poi come spieghi non sono abbinate a nessuna procedura.. (OK) mi spieghi per capire meglio come rientrano nella listbox2 "

    le ceckbox hanno la funzione di abilitare e disabilitare le combobox, quindi se flaggate disabilitano la combo di riferimento cancellando se presente la SINGOLA scelta effettuata, al contrario invece è possibile sia effettuare una scelta oppure no(lasciare vuota la combobox).
    Successivamente tramite il filtro avanzato viene compilata l'area dei criteri " CriteriaRange:=.Range("Criteri") " in relazione a quanto indicato e no nelle combobox, se vuote vengono ripresi tutti i records
    Così i dati vengono esportati nella seguente area di appoggio " CopyToRange:=.Range("V1").CurrentRegion "
    Tramite il metodo " ListBox2.RowSource = "=SPESE!V2:AB" & LastRow " viene popolata la listbox
    L'esportazione in pdf avviene effettuata direttamente dall'area di output del filtro avanzato

    Spero sia chiaro

    Ciao




  • di nichicanta (utente non iscritto) data: 01/08/2014 08:20:35

    Grazie gaetanopr, ho imparato altre cose nuove con questa discussione, che dire: grazie di esistere e di condividere con tutti voi questa bellissima esperienza di programmazione VBA.
    Buona giornata a tutti.



  • di mb (utente non iscritto) data: 01/08/2014 09:00:56

    grazie 1000000000000 Gaetanopr per la risposta, ho capito la funzione delle ceckbox che so come inserire in una userform, ma non sono riuscito a capire come hai fatto ad inserirle nella listbox. non riesco a vedere nessuna cella d'appoggio

    scusami "la timidezza" ma senza fretta se puoi ancora dare una mano ti ringrazio.

    non ho fretta perchè ero di "passaggio" per imparare

    rigrazie e buona giornata



  • di lepat (utente non iscritto) data: 01/08/2014 10:46:47

    il codice associato alle checkbox e questo, come vedi le checkbox attivano o disattivano le combobox ed i crireri di filtraggio dipendono a questo punto non più dalle checkbox, ma dalle combobox
     
    Private Sub CheckBox1_Click()
      If CheckBox1.Value = True Then
         ComboBox7.Value = ""
         ComboBox7.Enabled = False
      Else
         ComboBox7.Enabled = True
      End If
    End Sub
    
    Private Sub CheckBox5_Click()
      If CheckBox5.Value = True Then
         ComboBox8.Value = ""
         ComboBox8.Enabled = False
      Else
         ComboBox8.Enabled = True
      End If
    End Sub
    
    Private Sub CheckBox6_Click()
      If CheckBox6.Value = True Then
         ComboBox9.Value = ""
         ComboBox9.Enabled = False
      Else
         ComboBox9.Enabled = True
      End If
    End Sub
    



  • di lepat (utente non iscritto) data: 01/08/2014 10:50:49

    infatti il codice diventa, dove il filtro viene fatto sul range Criteri, cioè $M$1:$S$2
     
    With Worksheets("SPESE")
            Rem Compilo l'Area dei Criteri per il filtro avanzato
           .Range("M2").Value = ComboBox7.Value  'Condomini
           .Range("N2").Value = ComboBox8.Value  'TIPOLOGIA DI SPESA
            If ComboBox9.Value <> "" Then .Range("R2").Value = Format(ComboBox9.Value, "mm/dd/yyyy") Else .Range("R2").Value = ""
            Rem Cancello precedenti filtri
           .Range("V1").CurrentRegion.Clear
           Rem Filtro i dati
            LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
           .Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("Criteri"), CopyToRange:=.Range("V1").CurrentRegion, Unique:=False
    



  • di mb (utente non iscritto) data: 01/08/2014 11:37:49

    chiedo umilmente scusa ma ho capito che non riesco a spiegare il mio dubbio, forse perchè legato alla terminologia informatica sbagliata da parte mia.
    ho capito i passaggi delle varie sub, allego lo stamp delle videate per rendere l'idea su cosa non capisco.

    nella listbox ci sono dei quadrati che possono essere selezionati come si creano?? dov'è scritto??

    scusare la mia continua richiesta



  • di gaetanopr (utente non iscritto) data: 01/08/2014 11:49:22

    cit: mb "nella listbox ci sono dei quadrati che possono essere selezionati come si creano?? dov'è scritto?? "
    Questo è lo stile della listbox
    puoi consultare la guida in merito
     
    .ListStyle = 1



  • di mb (utente non iscritto) data: 01/08/2014 11:54:45

    grazie gaetano per la precisazione e mi scuso con tutti gli altri se vi ho fatto perdere del tempo prezioso

    buon fine settimana