Private Sub TextBox1_Change() 'au changement dans la TextBox1
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable dl (Première Adresse)
Me.ListBox1.Clear 'vide la ListBox1
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = .Range("A2:C" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
Set r = pl.Find(Me.TextBox1.Value, , xlValues, xlPart) 'définit la recherche r (recherche la valeur de la TextBox1 dans la plage pl)
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
pa = r.Address 'définit l'adresse de la première occurrence trouvée
Do 'exécute
With Me.ListBox1 'prend en compte la ListBox1 (qui compte quate colonne de 0 à 3 et dont la colonne 3 est masquée)
.AddItem Sheets("Feuil1").Cells(r.Row, 1).Value 'ajoute la valeur de la cellule en colonne A de l'occurrence trouvée
.Column(1, .ListCount - 1) = Sheets("Feuil1").Cells(r.Row, 2) 'ajoute la valeur de la cellule en colonne B de l'occurrence trouvée
.Column(2, .ListCount - 1) = Sheets("Feuil1").Cells(r.Row, 3) 'ajoute la valeur de la cellule en colonne C de l'occurrence trouvée
.Column(3, .ListCount - 1) = r.Row 'ajoute le numéro de ligne
End With 'fin de la prise en compte de la ListBox1
Set r = pl.FindNext(r) 'redéfinit la recherche r (occurrence suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en pa
End If 'fin de la condition
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'au double-clic dans la ListBox1
Dim li As Integer 'déclare la variable li (LIgne)
With Me.ListBox1 'prend en compte la ListBox1
li = .Column(3, .ListIndex) 'récupère le numéro de ligne de l'élément double-cliqué
End With 'fin de la prise en compte de la ListBox1
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
.Activate 'active l'onglet
.Cells(li, 1).Resize(1, 3).Select 'sélectionne les 3 cellules correspondantes
End With 'fin de la prise en compte de l'onglet "Feuil1"
Unload Me 'vide et ferme l'UserForm
End Sub