Condividi:        

menu a tendina con filtro per selezione elenco

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

menu a tendina con filtro per selezione elenco

Postdi marcus69 » 21/03/23 14:23

ciao,

nel file allegato ho un form con cui devo fare una selezione articoli.
due fogli: lista e selezioni
Nell'esempio ho messi 30 articoli, in realtà ne ho circa 2000, variabili.

Il menu a tendina li mostra tutti, ed è confuso ricercarli.

Voglio fare in modo che digitando nella cella B2 del foglio selezione ( e successive righe colonna B ) il menu a tendina "filtri" con gli elementi che contengono solo quelle parole e mostri solo quelle:

ad esempio scrivo " la " nel menu a tendina voglio vedere solo : Rosatella, Bombola, Bussola Mela Stella lampada

Ho provato con la soluzione " scarto di alcuni esempi presi dal web, ma non va bene, ha bisogno di una colonna di appoggio e non permette inserimento diretto in cella.

io vorrei replicare la funzione "FILTRI", su ogni riga della colonna B del foglio seleziona, filtrando l'elenco del foglio lista.

Mi va bene formula, VBA, polvere magica, qualsiasi cosa , anche solo una dritta della direzione in cui muovermi, ho finito le idee e non so come proseguire.

grazie a tutti

ciao
Andrea


https://docs.google.com/spreadsheets/d/ ... ue&sd=true
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Sponsor
 

Re: menu a tendina con filtro per selezione elenco

Postdi Anthony47 » 21/03/23 19:56

Voglio fare in modo che digitando nella cella B2 del foglio selezione ( e successive righe colonna B ) il menu a tendina "filtri" con gli elementi che contengono solo quelle parole e mostri solo quelle

Mentre digiti qualcosa nelle celle, excel e' congelato quindi non puo' cambiarti l'elenco di convalida.

Potresti farlo con una userform che si attiva quando selezioni una cella in colonna B di Seleziona; poi da lì, usando o un Combobox oppure un Listbox + Textbox di filtro vari in modo dinamico l'elenco fino alla scelta finale.

E' sufficiente lo spunto o serve un "aiutino ulteriore"?
Avatar utente
Anthony47
Moderatore
 
Post: 19419
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 07:54

mmmm temevo non fosse possibile la cella autoaggiornante.

mi studio il tuo suggerimento e ti dico in giornata grazie

ciao
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 12:50

aiuto...

https://drive.google.com/file/d/1VPehFO ... sp=sharing

mi sono impantanato su come applicare le azioni, è la prima volta che uso userform- combox

hai un esempio da cui prendere spunto per cortesia sul discorso di digitare in una cella, attivazione dello userform e vedere il filtrato che posso selezionare?
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 14:26

allora questo form va benissimo fa esattamente quello che mi serve, se in una cella metto un pulsante che lo attiva e faccio selezionare con questo form va bene

https://drive.google.com/file/d/1ncBYij ... share_link

ma poi come faccio a fargli inserire il risultato selezionato nella cella che è selezionata?
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 14:45

ok ho cambiato dove c'è il mostra messaggio con una funzione che individua la cella libera nella colonna che mi interessa e inserisce, vado avanti nello sviluppo e vediamo come procedo
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi Marius44 » 22/03/23 16:02

Ciao
Vediamo se ho capito bene.

IMPORTANTE:
a) ho utilizzato il file di cui al post #1
b) in detto file la colonna E del Foglio("lista") deve essere vuota
c) ho inserito una convalida dati nella cella H2 del Foglio("seleziona")
d) nel Modulo del Foglio("seleziona") ho inserito questo codice
Codice: Seleziona tutto
Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rCell As Range
Dim ur As Long, i As Long, j As Long, a As Long
Dim lng As Integer, lunga As Integer
Dim ele As String, digit As String, txt As String, frm As String

If Not Intersect(Target, Range("H2")) Is Nothing Then
  ur = Sheets("lista").Cells(Rows.Count, 2).End(xlUp).Row
  ele = "B2:B" & ur
  Sheets("lista").Range("E:E").ClearContents
  Set Rng = Sheets("lista").Range(ele)
  digit = Sheets("seleziona").Cells(2, 8).Value
  lng = Len(digit)
  a = 1
  For Each rCell In Rng.Cells
    lunga = Len(rCell)
    For j = 1 To lunga 'se valore cella è simile a quanto digitato
      txt = Mid(rCell, j, lng)
      If txt Like digit Then
        a = a + 1 'scrive il dato in col E di lista
        Sheets("lista").Cells(a, 5) = rCell.Value
        Exit For
      End If
    Next j
  Next
  'assegna l'elenco alla convalida
  ur = Sheets("lista").Cells(Rows.Count, 5).End(xlUp).Row
  frm = "=lista!$E$2:$E$" & ur
  If ur >= 2 Then
    With Sheets("seleziona").Cells(2, 8).Validation
      .Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=frm
      .IgnoreBlank = True
      .InCellDropdown = True
      .InputTitle = ""
      .ErrorTitle = ""
      .InputMessage = ""
      .ErrorMessage = ""
      .ShowInput = True
      .ShowError = False
    End With
  End If
End If
End Sub

Una volta inserito uno o più caratteri nella cella H2 e si dà Invio, se si clicca sulla freccia della convalida si apre un elenco con i nomi che contengono quanto digitato.
Il file lo trovi qui https://www.dropbox.com/s/v0llu4t1h7r9yv5/test_VBA.xlsm?dl=0

Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 657
Iscritto il: 07/09/15 22:00

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 16:27

ciao,

eccomi sono arrivato qui :

https://drive.google.com/file/d/15zKC8E ... share_link

fa esattamente quello che deve, funziona, ma non capisco come togliere il limite alla visualizzazione filtrata

se io quando clicco la user form inserisco "LA" vedo solo alcuni risultati, li devo vedere tutti, ed eventualmente avere una barra di scorrimento a destra per scendere.

mi date qualche dritta per cortesia?

grazie
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 16:28

Marius44 ha scritto:Ciao
Vediamo se ho capito bene.

IMPORTANTE:
a) ho utilizzato il file di cui al post #1
b) in detto file la colonna E del Foglio("lista") deve essere vuota
c) ho inserito una convalida dati nella cella H2 del Foglio("seleziona")
d) nel Modulo del Foglio("seleziona") ho inserito questo codice
Codice: Seleziona tutto
Option Explicit
Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rCell As Range
Dim ur As Long, i As Long, j As Long, a As Long
Dim lng As Integer, lunga As Integer
Dim ele As String, digit As String, txt As String, frm As String

If Not Intersect(Target, Range("H2")) Is Nothing Then
  ur = Sheets("lista").Cells(Rows.Count, 2).End(xlUp).Row
  ele = "B2:B" & ur
  Sheets("lista").Range("E:E").ClearContents
  Set Rng = Sheets("lista").Range(ele)
  digit = Sheets("seleziona").Cells(2, 8).Value
  lng = Len(digit)
  a = 1
  For Each rCell In Rng.Cells
    lunga = Len(rCell)
    For j = 1 To lunga 'se valore cella è simile a quanto digitato
      txt = Mid(rCell, j, lng)
      If txt Like digit Then
        a = a + 1 'scrive il dato in col E di lista
        Sheets("lista").Cells(a, 5) = rCell.Value
        Exit For
      End If
    Next j
  Next
  'assegna l'elenco alla convalida
  ur = Sheets("lista").Cells(Rows.Count, 5).End(xlUp).Row
  frm = "=lista!$E$2:$E$" & ur
  If ur >= 2 Then
    With Sheets("seleziona").Cells(2, 8).Validation
      .Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=frm
      .IgnoreBlank = True
      .InCellDropdown = True
      .InputTitle = ""
      .ErrorTitle = ""
      .InputMessage = ""
      .ErrorMessage = ""
      .ShowInput = True
      .ShowError = False
    End With
  End If
End If
End Sub

Una volta inserito uno o più caratteri nella cella H2 e si dà Invio, se si clicca sulla freccia della convalida si apre un elenco con i nomi che contengono quanto digitato.
Il file lo trovi qui https://www.dropbox.com/s/v0llu4t1h7r9yv5/test_VBA.xlsm?dl=0

Fai sapere. Ciao,
Mario


grazie, ma il file qui

https://drive.google.com/file/d/15zKC8E ... share_link

è piu vicino al risultato che devo ottenere, devo fare in modo di vedere tutte le occorrenze
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 16:30

trovato era la prima riga, procedo e vi aggiorno
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi Anthony47 » 22/03/23 21:04

Pensavo avessi gia' una esperienza sulle userform, ma vedo che sei costretto ad andare su google a cercare esempi da adattare, ma così impari meglio

Ti propino anche il mio esempio, basato sul tracciato dati del tuo primo messaggio; lo trovi qui: https://www.dropbox.com/s/4f75ylpds08e2 ... .xlsm?dl=0

Se vai sul foglio Seleziona e selezioni una cella di colonna B si apre questa userform:

Immagine

Nel textbox 1 puoi scrivere qualcosa, e il listbox2 si aggiornera' con le voci che contengono quella stringa; quando selezioni una voce in 2 questa viene scritta sulla cella selezionata; la selezione passa alla cella successiva e il ciclo si puo' ripetere.
Con le frecce dello Spinbutton 3 puoi selezionare la riga precedente o successiva (senza modificare il contenuto della selezione corrente).
Il pulsante 4, o il click sulla userform o la X rossa consentono di chiudere la userform (si riaprira' quando riselezioni una cella di colonna B)
All'interno della Sub UserForm_Initialize si puo' definire quale e' l'inizio della base dati da usare per popolare il listbox (istruzione marcata <<<)

La Sub TextBox1_Change gestisce il filtro del contenuto del listbox

Le Sub SpinButton1_SpinUp /SpinDown muovono la selezione senza scriverci

Vedi quanto e' simile alla tua esigenza; sperimenta e adatta...
Avatar utente
Anthony47
Moderatore
 
Post: 19419
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 22/03/23 21:29

Le tue soluzioni son sempre top.
A livello di codice è analisi dati , come scrivevo qualche settimana fa sopratutto grazie al forum, son diventati molto proficuo e autonomo.

Si è verificata questa nuova esigenza e già : esperienza zero. E come hai ben visto non mi scoraggio. Chiedo vado provo smanettò.

Stavo provando la tua soluzione. È proprio carina. Molto più stilosa della mia.

Domani la provo e vedo come adattarla

Grazie sempre 1001.
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi marcus69 » 23/03/23 07:45

sei una forza, la tua soluzione è molto piu bella della mia !!! va alla grande.

elaboro e compongo

GRAZIE
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: menu a tendina con filtro per selezione elenco

Postdi Anthony47 » 23/03/23 12:45

la tua soluzione è molto piu bella della mia
Ci speravo :D :D

va alla grande
Prima che te ne accorga troppo tardi, quando clicchi fallo velocemente, perche' se tieni premuto a lungo come fanno i boomers allora rischi di riempire tante righe con lo stesso valore...
Avatar utente
Anthony47
Moderatore
 
Post: 19419
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "menu a tendina con filtro per selezione elenco":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti