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