Bonjour
L’intitulé est incompréhensible je dirai, désolé, je vais tenter de m'expliquer plus clairement.
Voila, j'ai besoin, pour mon travail, de créer un petit outil pour rechercher une référence (à laide d'un mot clef) dans
une liste de plusieurs millier de lignes.
J'ai trouvé cette macro ici même ,qui fait plus ou moins le travail, et me donne les résultats de ma recherche dans une listbox.
Mon soucis, est qu'il me donne toutes les lignes ou apparait le mot dans l'ensemble de la chaine de caractère.
Par exemple, si je cherche "Lan" tout simplement , la macro ne fera pas la différence avec "Lancer" ou encore "Lana" .
Au début, la macro était associé à l'Event "change" de ma textbox, mais j'ai essayé de le déclencher avec "Enter" pour ainsi avoir le mot
souhaité avant de lancer la recherche, mais rien n'y fait
J'ai essayé par la suite d'associer des espaces avant et après la valeur de la textbox, mais là aussi, rien.
Auriez vous une piste à me proposer svp, je suis dans une impasse là.
Merci infiniment pour le temps que vous voulez bien m'accorder
Voici la macro de base avec laquelle je travaille:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 If keycode <> 13 Then Exit Sub If Me.TextBox1 <> "" Then '--- Set d = CreateObject("scripting.dictionary") mots = Split(Trim(Me.TextBox1), ",") For Each m In mots mots2 = Split(Trim(m), " ") Tbl = choix For i = LBound(mots2) To UBound(mots2) Tbl = Filter(Tbl, mots2(i), True, vbTextCompare) Next i For i = LBound(Tbl) To UBound(Tbl): d(Tbl(i)) = "": Next i Next m Tbl = d.keys '---- n = UBound(Tbl) + 1 If n > 0 Then ReDim Tbl2(LBound(Tbl) To n + 1, 1 To NbCol) For j = LBound(Tbl) To UBound(Tbl) a = Split(Tbl(j), "|") For k = 0 To NbCol - 1: Tbl2(j, k + 1) = a(k): Next k Next j Me.ListBox1.List = Tbl2 Else Me.ListBox1.Clear End If Else Me.ListBox1.List = TblBD End If
Partager