Textbox de recherche dans listbox
Bonjour,
Ce forum regorge de personnes volontaires qui m'ont déjà aidé et que je remercie de nouveau s'ils voient ceci !
Mon problème étant de pouvoir faire une recherche d'un textbox2 (avec la fonction "*"&like&"*") dans ma listbox.
Internet et ce forum sont pleins de solutions que je n'arrive pas à adapter à cause de connaissances limités :/
Le code trouvé est le suivant : crédit/ boisgontierj
Private Sub CommandButton1_Click()
k = 0
Me.ListBox1.Clear
If Me.TextBox2 = "" Then Me.TextBox2 = "*"
If Me.TextBox1 = "" Then Me.TextBox1 = "*"
For i = 2 To [A65000].End(xlUp).Row
If Cells(i, 1) Like "*" & Me.TextBox1 & "*" _
And Cells(i, 5) Like TextBox2 Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = Cells(i, 1)
Me.ListBox1.List(k, 1) = Cells(i, 2)
Me.ListBox1.List(k, 2) = Cells(i, 3)
Me.ListBox1.List(k, 3) = Cells(i, 4)
Me.ListBox1.List(k, 4) = Cells(i, 5)
Me.ListBox1.List(k, 5) = i
k = k + 1
End If
Next i
End Sub
Private Sub ListBox1_Click()
ligne = ListBox1.Column(5)
Rows(ligne).Select
End SubCar j'aimerai que ma recherche se fasse sans bouton qui lance celle-ci !
En vous remerciant d'avance tous de votre implication
Cordialement
QL
Salut,
Si je comprend bien, tu cherche à avoir une barre de recherche dans une TextBox qui actualise automatiquement ta ListBox en fonction du résultat ?
C'est ce qu'on appelle une "saisie semi-automatique", un peu comme quand tu fais des recherches dans Google et qu'il te propose plusieurs suggestions en fonction de ce que tu as déjà écris.
Si c'est le cas, tu peux essayer d'adapter ce bout de code que j'avais écris dans un de mes projets :
Private Sub textBoxRecherche_Change() ' évènement dès qu'on tape dans la textBox de recherche
Me.ListBox.Clear ' on clear la listBox
i = 0
For Each c In Application.Index([tabListBox], , 1) ' tu dois créer une plage avec TOUTES les
' valeurs qui sont initialisées
' dans la listBox, c'est ces éléments qu'on
' va comparer et ajouter
If UCase(c) Like UCase(Me.textBoxRecherche) & "*" Then
Me.ListBox.AddItem c.Offset(0, 0).Value, i ' Si les élements concordent, alors on
' ajoute dans la ListBox
ListBox.ListIndex = 0
i = i + 1
End If
Next c
End SubVoilà voilà, de mon coté ça marche niquel, c'est juste un peu lent si tu as énormément d'Item dans ta ListBox.
Merci de votre solution, cela va réussir à s'adapter aux filtres qui viennent et repartent dans le userform ?