[Résolu]TextBox Recherche ListBox Multicolonnes

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kim75

XLDnaute Occasionnel
Bonjour le forum,

J'utilise ce code de « Liste Intuitive Form Contenu » du site de Jacques Boisgontier, une véritable mine d'or 🙂

http://boisgontierjacques.free.fr/pages_site/donneesvalidation.htm
VB:
Private Sub TextBox5_Change() 
Dim Dico As Object, c, tmp
Set Dico = CreateObject("Scripting.Dictionary")
Me.ListBox8.Clear
tmp = "*" & UCase(Me.TextBox5) & "*"
For Each c In Tbl
    If UCase(c) Like tmp Then Dico(c) = ""
Next c
Me.ListBox8.List = Dico.keys
End Sub

Ce code est prévu pour une ListBox à 1 colonne alimentée directement de la feuille Excel, et je n'arrive à l'adapter pour une ListBox à 3 colonnes, alimentée non pas de la feuille Excel directement mais par l'intermédiaire d'un Array à 3 colonnes lui aussi. Si quelqu'un pourrait me filer un coup de main ce serait sympa, j'ai essayé une autre méthode sans passer par le dictionnaire mais sans résultat, je rencontre des problèmes de compatibilité de types d'objets que je connais malheureusement peu.

Cordialement, Kim.
 

Pièces jointes

Bonjour à tous,

J'ai réalisé une textbox et une listview dans un UserForm. La recherche de données dans toutes les colonnes de la listview marche parfaitement mais avec qu'un seul mot-clé. Je souhaite rechercher les données en parcourant toutes les colonnes de la listview avec plusieurs mots dans un ordre quelconque afin d'affiner davantage la recherche.
(Pour des soucis de rapidité d'exploitation des données, je ne souhaite pas de bouton "Rechercher". La recherche des données s'affine au fur et à mesure de la saisie.)

De ce fait, Jacques, votre exemple concernant la recherche intuitive par plusieurs mots dans toutes les colonnes répond exactement à mon besoin (cf. fichier Excel "RechercheMultiMotsMulticolonnes"). Néanmoins, vous avez réalisé ceci à partir d'une listbox. Dans mon cas, j'ai besoin de rester en listview pour des contraintes d'affichage et de mise en forme des données.

Ci-joint mon fichier excel allégée afin de vous montrer mon codage actuel et mon UserForm.

Ma question : est-il possible d'adapter votre code pour ma LISTVIEW dans le but de rechercher des données sur les 13 colonnes avec plusieurs mots dans un ordre quelconque ?
Sinon, tout simplement, est-il possible de rechercher des données dans une listview avec plusieurs mots ?

(Cela fait maintenant 1 semaine que je butte sur ce sujet) 🙁

Cordialement, Bitiligo.
 

Pièces jointes

Bonsoir,

Dim f, choix(), Rng, Ncol
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set Rng = f.Range("A3:M" & f.[A65000].End(xlUp).Row)
Tbltmp = Rng.Value
Ncol = Rng.Columns.Count
For i = LBound(Tbltmp) To UBound(Tbltmp)
ReDim Preserve choix(1 To i)
For k = LBound(Tbltmp) To UBound(Tbltmp, 2)
choix(i) = choix(i) & Tbltmp(i, k) & " * "
Next k
Next i
'---listview
With Me.ListView1
With .ColumnHeaders
.Clear
For k = 1 To Ncol
.Add , , f.Cells(2, k), f.Columns(k).Width * 0.9
Next k
End With
.Gridlines = True
.View = lvwReport
ligne = 1
For i = 1 To UBound(Tbltmp)
.ListItems.Add , , Tbltmp(i, 1)
For k = 2 To Ncol
.ListItems(ligne).ListSubItems.Add , , Tbltmp(i, k)
Next k
ligne = ligne + 1
Next i
End With
End Sub

Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
If UBound(Tbl) > -1 Then
Me.ListView1.ListItems.Clear
ligne = 1
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "*")
Me.ListView1.ListItems.Add , , a(0)
For k = 1 To Ncol - 1
Me.ListView1.ListItems(ligne).ListSubItems.Add , , a(k)
Next k
ligne = ligne + 1
Next i
Me.Label1.Caption = UBound(Tbl) + 1
End If
Else
UserForm_Initialize
End If
End Sub


BISSON
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 ListBox TextBox
Réponses
5
Affichages
2 K
Réponses
2
Affichages
792
Réponses
3
Affichages
1 K
Retour