riempimento automatico



  • riempimento automatico
    di tonispizza (utente non iscritto) data: 19/12/2015 16:07:26

    Salve, sono nuovissimo di questo forum! Ho creato in excel il menù a tendina classico, con la Convalida Dati, molto funzionale; ma trattando una grandissima mole di dati ho difficoltà nel cercare il campo di mio interesse. Vorrei sapere se qualcuno di voi ha mai creato o utilizzato qualche macro o altro congegno per far si che quando nella casella con il menù a tendina inserisco la prima lettera, automaticamente vengono filtrati i campi, anche quelli dove la lettera si tra nel mezzo della parola, poi la seconda lettera, e via dicendo! AIUTATEMI, GRAZIE!



  • di patel data: 19/12/2015 21:24:19

    con un normale menù a tendina e con molti dati non puoi fare quello che chiedi, occorre un combobox, puoi trovare facilmente esempi in rete





  • di alfrimpa data: 19/12/2015 23:03:39

    Ciao Patel

    Poichè Tonispizza ha aperto la stessa discussione nell'altra sezione del forum gli ho risposto in quella.

    Alfredo




  • riempimento automatico
    di tonispizza data: 19/12/2015 16:54:52

    Ciao,
    uso excel 2007.
    Ho un elenco di cell a2:a500 con "convalida dati" settato a "lista" e la fonte della lista di validazione contiene un elenco di nomi del tipo: "luca,Mario,Gianni,Francesco"

    Selezionando la cella A2 appare un menu a tendina da cui posso selezionare i nomi "luca,Mario,Gianni,Francesco,Francesca,taranto,Montana"

    Fin qui tutto ok (direi da primi passi con excel...)

    Il mio problema è che vorrei che una volta che sono in una qualsiasi cella nell'intervallo a2:a500 ed inizio a scrivere nella cella, voglio che mi compaiono i nomi della nella lista di validazione in base alle prime lettere che sto scrivendo.

    Ad es. se inizio a scrivere" ta" nella cella a2 mi deve comparire, come scelta nel menu a tendina della cella a2, "taranto, tartaruga,Montana".Andrò poi a selezionare il nome che mi serve, ad es. "Montana"



  • di alfrimpa data: 19/12/2015 17:34:27

    Ciao Toni

    Poiché avevo fatto una cosa del genere per un utente di un altro forum la propongo anche a te.

    Ti ho allegato il file e ti illustro come funziona

    Sul foglio1 c'è un pulsante "Apri Maschera"; cliccaci su e ti si aprirà una maschera che contiene una casella di testo ed una casella di riepilogo.

    All'apertura della maschera nella casella di riepilogo saranno visualizzati tutti i nomi inseriti in colonna A ma via via che digiterai delle lettere nella casella di testo nella casella di riepilogo verranno esposti solo quei nomi che contengono le lettere digitate.

    E' ovvio che questo è solo un esempio che andrà poi adattato al tuo caso.

    Giusto per stimolare la tua curiosità ti riporto qui sotto il codice VBA che gestisce il tutto.

    Quindi allega il tuo file e vedremo di sistemarlo.

    Alfredo

    P.S. Hai aperto nell'altra sezione una discussione identica e non era necessario.
     
    Private Sub ListBox1_Click()
    Range("C1").Value = UserForm1.ListBox1.Value
    UserForm1.ListBox1.Visible = False
    End Sub
    
    Private Sub TextBox1_Change()
    UserForm1.ListBox1.Visible = True
    Call mCaricaListBox("FiltraDati")
    End Sub
    
    Private Sub UserForm_Initialize()
        Set sh = ThisWorkbook.Worksheets("Foglio1")
        'UserForm1.ListBox1.Visible = False
        Call mCaricaListBox("CaricaDati")
    End Sub
    
    
    Private Sub mCaricaListBox(ByVal s As String)
    
        Dim lRiga As Long
        Dim lng As Long
        
        With sh
            lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
        End With
        
        With Me.ListBox1
            If s = "CaricaDati" Then
                For lng = 1 To lRiga
                    .AddItem (sh.Range("A" & lng).Value)
                Next
            ElseIf s = "FiltraDati" Then
                .Clear
                For lng = 1 To lRiga
                    If InStr(sh.Range("A" & lng).Value, Me.TextBox1.Text) Then
                        .AddItem sh.Range("A" & lng).Value
                    End If
                Next
            End If
        End With
        
    End Sub
    
    
    Private Sub UserForm_Terminate()
        Set sh = Nothing
    End Sub