Bonjour,

A partir d'une base de données, je souhaite développer un fomulaire de recherche de références selon 1 à 3 mots clés.

Mon formulaire est créé, j'ai prévu 3 textbox afin que les utilisateurs saisissent leurs critères de recherche. Sur ce même formulaire, j'ai une listbox afin d'y faire apparaître les références qui contiennent tous les critères (au moins 1 est nécessaire) et j'ai également un certain nombre de textbox pour faire appraître le détail de la référence selectionnée dans la listbox.

Mon problème concerne seulement la partie identification des références ayant tous les mots clés. J'arrive bien à définir la liste des références mais seulement selon un mot clé et non selon les 2 ou 3 mots clés pour la même référence. De plus, mon code prend en compte la synthaxe (minuscule et majuscule) ce qui rend la recherche incomplète.

Auriez-vous une solution ou un conseil sur la façon de procéder svp !!!


Mon code est le suivant :

CMD_Go >>> bouton pour lancer la recherche
Cle1, Cle2, Cle3 >>> textbox pour saisir les mots clés
Listbox >>> nom de la listbox

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
31
32
33
34
35
36
37
38
39
40
41
Private Sub CMD_Go_Click()
 
'Test de la présence du mot clé 1
If Cle1.Value = "" Then
    MsgBox "Veuillez saisir un critère de recherche.", vbExclamation,    
    Exit Sub
End If
 
'Nettoyage de la listbox
ListBox.Clear
 
Application.ScreenUpdating = False
 
'Boucle pour récupérer le nombre de ligne non vide
i = 3 
Worksheets("ONG_BDD").Range("B4").Select
Do Until ActiveCell.Value = ""
    ActiveCell.Offset(1, 0).Select
    i = i + 1
Loop
 
'Double boucle pour parcourir chaque cellule de chaque ligne
For n = 4 To i
    For c = 2 To 37
        If Cells(n, c) Like ("*" & Cle1.Value & "*") Then
            ListBox.AddItem Cells(n, 2)         
        End If
        If Cle2.Value <> "" Then
            If Cells(n, c) Like ("*" & Cle2.Value & "*") Then
                ListBox.AddItem Cells(n, 2)  
            End If
        End If
        If Cle3.Value <> "" Then
            If Cells(n, c) Like ("*" & Cle3.Value & "*") Then
                ListBox.AddItem Cells(n, 2) 
            End If
        End If
    Next c
Next n
 
End sub
Ci-dessous un exemple

Ref : 11-256 / 33-486 / 44-789 / 56-457 / 78-412
Col 1 : le poisson est rouge / le poisson est malade / la femme voit rouge / la femme est absente / le ciel est découvert
Col 2 : Ballon / bleu / malade / femme / rouge
Col 3 : femme / ciel / découvert / poisson / poisson
etc.

si l'utilisateur recherche les références qui contiennent les mots clés "isson" et "fem" la listbox doit afficher 11-256, 56-457 !