Ricerca in elenco



  • Ricerca in elenco
    di alexps81 data: 30/06/2015 08:37:13

    Buongiorno a tutti voi, oggi avrei la necessità di risolvere un problemino e volevo sapere se qualcuno può aiutarmi.
    Ho un elenco composto da QUALIFICA - COGNOME - NOME - NUMERO DI TELEFONO. Attraverso un pulsane TROVA si apre una USERFORM con una TEXTBOX dove scrivere all'interno una tra queste scelte (marco o luisa o numero di telefono o la qualifica) e al Click su CERCA deve filtrare tutti quelli con gli stessi riferimenti da cercare.
    Allego file di esempio

    Grazie mille...



  • di Marius44 (utente non iscritto) data: 30/06/2015 10:36:00

    Ciao Alex
    Ti allego il tuo file riveduto e corretto. Ho aggiunto Option Compare Text per far sì che trovi i nomi o le qualifiche o altro sia in maiuscolo sia in minuscolo.
    Attento:
    1) vale per un elenco piccolo e per 4 colonne altrimenti bisogna adattarlo ma potrebbe diventare lento per un elenco di grosse dimensioni;
    2) quando devi "scaricare" un UserForm devi usare Unload Userform e non UserForm.Hide (questo "nasconde" il Form ma i dati vi rimangono).
    Fammi sapere. Ciao,
    Mario



  • di alexps81 data: 30/06/2015 11:13:30

    Ciao Marius44 grazie per i tuoi suggerimenti e per quello che hai realizzato per me. Probabilmente ho sbagliato ha non esprimermi in modo chiaro. In realtà il tuo file lavora non proprio come vorrei.
    Stavo cercando qualcosa che quando si scrive nella TextBox al click su Cerca la UserForm deve scomparire e selezionare la cella dove si trova ciò che si vuole ricercare

    Grazie



  • di Marius44 data: 30/06/2015 11:27:14

    Se è questo che vuoi sostituisci la sub che hai nel programma inviatoti con quella sottostante.
    Ciao,
    Mario
     
    Private Sub CommandButton1_Click()
    Dim i As Integer, j As Integer, testo As String, dato As String
    Dim dt As String
        dt = ""
        testo = TextBox1.Text 'assume il testo in textbox1
        For j = 1 To 4
        For i = 1 To 22
            dato = Cells(i, j).Text
            If dato = testo Then    'se ha trovato
                'assume tutti i dati
                'dt(1) = Cells(i, 1): dt(2) = Cells(i, 2): dt(3) = Cells(i, 3): dt(4) = Cells(i, 4)
                
                'seleziona il dato trovato
                Cells(i, j).Select: dt = "ok"
                GoTo 1
            End If
        Next i
        Next j
    1   If dt <> "" Then
            Unload UserForm1
            
        End If
    End Sub



  • di alexps81 data: 30/06/2015 12:47:02

    Grazie mille, ho riadattato il codice e funziona tutto. Per migliorare il tutto volevo sapere se è possibile fare in modo che la ricerca può avvenire anche con dati parziali, ad esempio anziché scrivere ALESSANDRO, funziona anche con ALESS.
    Poi siccome in elenco ci saranno molti nomi uguali, è possibile far in modo che mi mostri tutti quelli disponibili o magari introdurre un pulsante tipo "SUCCESSIVO"?
    Grazie



  • di Marius44 data: 30/06/2015 13:07:11

    Per le ricerche con nomi "parziali" basta aggiungere un asterisco prima e dopo testo, cioè sostituisci questo << testo = TextBox1.Text 'assume il testo in textbox1 >> con il seguente << testo = "*" & TextBox1.Text & "*" 'assume il testo in textbox1.
    Per quanto riguarda l'elencazione così come hai strutturato il foglio non è possibile nè con un pulsante "successivo". Si potrebbe provare con VBA e una ListBox che riporti tutti i dati simili.
    Ciao,
    Mario