Bonjour à tous et merci d'avance pour votre aide
J'ai réalisé un petit tableau d'exemple avec quelques noms, prénoms et numéro
J'ai un Userform qui contient une Combobox pour le choix du critère de recherche et un textbox afin de saisir ce que l'on recherche.
Ca marche très bien pour les champs NOM et PRENOM, de sorte que par exemple :
- si l'on choisi NOM dans la Combo et tape "DU" dans la textbox il alimente la listbox avec DUPONT DURANT et DUPOND
- si l'on choisi NOM dans la Combo et tape "OND" dans la textbox il alimente la listbox avec DUPOND
il prend donc en compte en guise de recherche tout ce qui est contenu dans la textbox
Le hic c'est que ça ne marche pas du tout pour le champs NUMERO, enfin ça marche seulement si on tape le numéro exact, j'aimerai trouver la même praticité de recherche qu'avec les champs PRENOM ET NOM comme par exemple :
- si l'on choisi NUMERO dans la Combo et tape "56" dans la textbox il alimente la listbox avec les lignes DUPONT car le numéro = 5123456 et DUPOND car le numéro = 5652533
Ci-dessous le code et en Fichier joint le doc excel
Il doit s'agir d'une histoire de format, à voir peut être avec la fonction LIKE Vba, j'ai tenté de m'en servir mais sans succès
Je pense que c'est un cas simple pour certain d'entre vous mais j'avoue que je sèche ! Merci
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 Private Sub UserForm_Initialize() ComboBox1.List = WorksheetFunction.Transpose(Feuil1.Range("A1:C1")) ' on alimente en colonne la combobox1 avec les valeurs des intitulés de colonne _ du tableau de la feuille End Sub Private Sub CommandButton1_Click() Sheets("SOURCE").Select Range("I3").Select Sheets("SOURCE").Range("I4") = ComboBox1.Value ' j'affecte le critere de recherche à la celulle I4 Sheets("SOURCE").Range("I5") = CStr("*" & TextBox1.Value & "*") ' et j'affecte le contenu de recherche à la cellule I5 Call FILTRERPOURLISTBOX 'je lance un filtre pécial ListBox1.RowSource = Feuil1.Range("M4:O20").Address(external:=True) 'et j'alimente la listbox1 avec le resultat du filtre special End Sub Sub FILTRERPOURLISTBOX() Sheets("SOURCE").Select Range("A1:C20").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "I4:I5"), CopyToRange:=Range("M4:O4"), Unique:=False End Sub Private Sub CommandButton2_Click() Unload Me End Sub
Partager