valore combobox come filtro



  • valore combobox come filtro
    di gagen (utente non iscritto) data: 01/04/2013 15:09:11

    Auguri a tutti voi!
    ho bisogno di aiuto come al solito!
    nel codice sotto realizzato sempre con voi, posso inserire un valore in una delle 2 tbox e fare la ricerca che mi serve, con il risultato di copiare i dati nel foglio ricerca e di popolare il rowsource della cb3

    devo evolvere il tutto, vincolando il risultato della ricerca copiato nel foglio, alle sole righe colonna G del foglio ricerca che contengono il valore scelto nella cb1 della userform
    in sintesi è come se dopo la ricerca utilizzassi nel foglio ricerca il filtro dati.
    La cb3 deve popolarsi dei soli valori filtrati

    grazie mille
     
    Private Sub CommandButton1_Click()
    Dim N1 As String, n2 As String
    Dim Ro As Integer
    Set shr = Worksheets("ricerca")
    Set sha = Worksheets("archivio")
    Application.ScreenUpdating = False
    On Error Resume Next
    N1 = TextBox1.Text
    n2 = TextBox2.Text
    Ro = 2
    shr.Activate
    shr.Range("A2:V3000").ClearContents
    
    If TextBox2 <> "" And TextBox1 <> "" Then
    
    MsgBox ("ATTENZIONE   SCEGLIRE SOLO UN NOME")
    Exit Sub
    Else
    
    For Each c In sha.Range("E:E")
            If c.Value = "" Then Exit For
            If c.Value = N1 Then
            Range(c.Offset(0, -4), c.Offset(0, 17)).Copy
            shr.Cells(Ro, 1).Select
            Selection.PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Ro = Ro + 1
            End If
    Next c
    
    End If
    
    
    For Each d In sha.Range("F:F")
            If d.Value = "" Then Exit For
            If d.Value = n2 Then
            Range(d.Offset(0, -5), d.Offset(0, 16)).Copy
            shr.Cells(Ro, 1).Select
            Selection.PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Ro = Ro + 1
            End If
    Next d
    
    shr.Cells(Ro, 1).Select
    'Me.Hide
    ComboBox3.RowSource = "ricerca!a2:a1500"
    Exit Sub
    End Sub


  • Ricerca multipla
    di mmc0070 (utente non iscritto) data: 01/04/2013 15:18:27

    Ho creato un form di ricerca :

    Regione : ______
    Città : ______
    Partito : _______

    con una listbox dei record trovati

    Su un foglio ho una grande tabella con i dati incolonnati Regione - Città - Partito

    Per effettuare la ricerca di un singolo campo ho semplicemente risolto con un ciclo Do-loop:

    if txtRegione.value<>"" then
    Do
    if txtRegione.value = cells(riga,colonna).value then
    listbox.add ....
    end if
    loop until ... fine dati
    end if

    if txtCitta.value<>"" then
    Do
    if txtCitta.value = cells(riga,colonna).value then

    .... etc


    ma nel caso in cui l'utente effettua una ricerca avanzata, compilando più campi, dovrei impelegarmi con un serie If ... and ... and... then.
    Potreste suggerirmi qualcosa di più semplice ?
    Grazie



  • di Vecchio Frac data: 01/04/2013 18:04:28

    @mmc0070
    Non devi fare una domanda nuova in una discussione iniziata da un altro utente.
    Devi aprire una discussione nuova e postare là la tua domanda.





  • di Vecchio Frac data: 01/04/2013 18:12:05

    @gagen
    cit. " devo evolvere il tutto, vincolando il risultato della ricerca copiato nel foglio, alle sole righe colonna G del foglio ricerca che contengono il valore scelto nella cb1 della userform "
    ---> Questo passaggio non mi è chiaro, puoi rispiegarti? cosa vuol dire vincolare il risultato della ricerca alle sole righe della colonna G? intendi una ricerca successiva? in che punto del codice valorizzi la colonna G?





  • di gagen (utente non iscritto) data: 01/04/2013 19:48:33

    hai ragione mi spiego

    il foglio "archivio" e il foglio "ricerca" sono uguali.
    il codice trova una serie di righe in "archivio" e le copia nel foglio "ricerca" in base a ciò che viene inserito in una delle 2 txbox
    io vorrei aggiungere una seconda condizione filtrante:
    che fossero copiate in "ricerca" solo le righe che nella colonna G del foglio "archivio" riportano lo stesso valore selezionato nella combobox1 (stessa userform che contiene tutto)

    se più comodo, si potrebbe far cancellare dopo l'esecuzione del codice così come è ora, dopo la copia, le righe del foglio "ricerca" , che nella colonna G non riportano il valore presente nella cbox1

    spero stavolta sia chiaro



  • di Vecchio Frac data: 01/04/2013 20:14:22

    Saresti così gentile da postare un file come è adesso, con codice e userform a corredo, con dati fittizi? se devo ricostruirmi lo scenario, mi perdo nei particolari e rischio di non ricreare la tua situazione.





  • di gagen (utente non iscritto) data: 01/04/2013 20:38:02

    fatto



  • di Vecchio Frac data: 01/04/2013 21:01:13

    Ok, quindi tu vuoi scegliere un nominativo dalle due textbox (cognome e nome 1 o cognome e nome 2) e dalla combobox1 ("ufficio"), quindi cercare il dato nel foglio archivio che corrisponde ai termini immessi e copiarlo in foglio ricerca.

    Direi che il procedimento da seguire è analogo a quello già fatto, ma aggiungi l'operatore And durante il confronto.
    Nel primo For devi legare la valutazione al contenuto della cella in E e di quella in G (che si trova due colonne a destra di E):
    If c.Value = N1 And c.Offset(, 2) = ComboBox1 Then

    Nel secondo For devi legare la valutazione al contenuto della cella in F e di quella in G (che si trova una colonne a destra di E):
    If d.Value = n2 And d.Offset(, 1) = Combobox1 Then

    Questo è il concetto, lasciando perdere le eventuali ottimizzazioni del codice.





  • di gagen (utente non iscritto) data: 02/04/2013 19:41:42

    grande!!!
    ora provo a inserire altri confronti da solo.....
    magari ci risentiamo

    grazie mille