Liste intuitive // chaine de caractere et non pas la 1ere le

Bonjour à tous,

J’ai pas mal cherché sur des forums avant de poser ma question, bon réflexe, certains me diront N’ayant rien trouvé, je créé un nouveau fil.

Je suis à la recherche d’une manière pour créer une liste déroulante « semi-intuitive ». Il existe de nombreux exemples réalisés / repris par des fans d’Excel et de VBA. Malheureusement pour moi, elles sont toutes basées ( un ex. est en PJ de ce post ) sur la prise en compte de la 1ère lettre des mots qui constituent la liste. Pour exemple avec la liste ci-dessous, si je tape « C », elles vont me proposer : Chocolat, Chocolat au lait et Choc.

  • Chocolat ;
  • Chocolat au lait
  • Lait
  • Choc
  • Latte

Je souhaiterais que si je mets L, elle me propose Latte, Lait mais également Chocolat au lait.

Le must / the cherry on the cake, serait qu’on puisse taper plusieurs lettre et que la liste se réduise des propositions de la liste déroulante se réduise au fur et à mesure. La liste réduite peut s’afficher en instantanée ( le must comme quand on précise un filtre automatique ! ) ou lorsqu’on appui sur la flèche de la liste déroulante.

Avez-vous cela dans vos archives ?

J’espère être compréhensible en cette fin de semaine.

Merci d’avance !!

Jonathan

Bonjour,

une proposition via un userform

sélectionner la cellule D1 pour lancer la macro

72chocolat.xlsm (15.33 Ko)

Bonjour h2so4 ( quel pseudo irritant ^_^ ),

Ce que tu m'as proposé est génial, cela m'aurait aidé sur pas mal de projet ces dernières années. Je intégrer ta proposition sur un de mes travaux personnels en cours. l'objectif est de travailler sur un grand tableau ( 62 colonnes ) via des UserForm et TextBox pour faciliter les consultations et modifications des données. Cela est plus agréable et pratique que le scrolling horizontal sur les 62 colonnes. Voici comme cela fonctionne :

J'affiche un UF avec une ComboBox qui me donne la liste des produits de l'onglet "Recap". Je change la valeur de la CB en déroulant la liste des produits et que je choisi une valeur ( définie "r" dans ma fonction ), cela va chercher dans cette valeur dans la colonne B de l'onglet "Recap". Une fois la ligne correspondante identifiée, les valeurs des cellules de cette ligne sont reprises dans des TextBox d'un autre UF nommé Resultatconsultation. Voici la fonction :

Private Sub CB1_Change() 'au changement dans la ComboBox1
Dim r As Range 'déclare la variable r (Recherche)
Dim li As Long 'déclare la variable li (LIgne)
'If CB1 <> "" Then 'condition : si la ComboBox1 n'est pas vide
    With Sheets("Recap") 'prend en compte l'onglet "Recap"
        'définit la recherhce r
         Set r = .Range("B3:B" & .Cells(Application.Rows.Count, 3).End(xlUp).Row).Find(CB1.Value, , xlValues, xlWhole)
         li = r.Row 'définit la ligne li

         Resultatconsultation.TextBox1 = .Cells(li, 2) 'récupère la valeur de la colonne 2 pour l'attribuer à la TextBox1
         Resultatconsultation.TextBox2 = .Cells(li, 3)

Comment puis-je reprendre ton modèle, pour que utiliser la valeur filtrée et choisie, , qui correspondrait à "r", dans ta TextBox1 soit utiliser dans ma fonction ?

Merci d'avance Genius.

Jonathan

Bonjour

code adapté pour alimenter textbox1 et textbox2 en fonction de la ligne sélectionnée dans listbox1

Private Sub ListBox1_Click()
    If ListBox1.ListIndex > -1 Then
        st = ListBox1.List(ListBox1.ListIndex)
        li = Left(st, InStr(st, "-") - 1)
        With Sheets("Recap")
            Resultatconsultation.TextBox1 = .Cells(li, 2)
            Resultatconsultation.TextBox2 = .Cells(li, 3)
        End With
        Unload Me
    End If
End Sub

Private Sub textbox1_Change()
    With Sheets("recap")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        ListBox1.Clear
        c = UCase(TextBox1)
        Application.EnableEvents = False
        For i = 1 To dl
            c1 = UCase(.Cells(i, 1))
            If Left(c1, Len(c)) = c Or InStr(c1, " " & c) <> 0 Then
                ListBox1.AddItem i & "-" & .Cells(i, 1)
            End If
        Next i
        Application.EnableEvents = True
    End With
End Sub
Rechercher des sujets similaires à "liste intuitive chaine caractere pas 1ere"