Bonjour les amis,
ci-dessous un code qui cherche un mot clé, saisi dans une textbox, dans une plage. Une fois trouvé, il surligne lla cellule et masque les lignes non colorées.
Mon problème est que si le mot est en colonne B il ne se passe rien....
Pourriez vous m'éclairer ?
PS : fichier joint
Private Sub CommandButton2_Click() 'bouton "Valider"
Dim pl As Range 'déclare la variable pl (Plage)
Dim r1 As Range
Dim pa1 As String
Dim cel As Range 'déclare la variable cel (CELlule)
Application.ScreenUpdating = False 'masque les changements à l'écran
Set pl = Range("A4:B" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
'si la TextBox1 n'est pas vide, définit la recherche r1
If Me.TextBox1 <> "" Then Set r1 = pl.Find(Me.TextBox1.Value, , xlValues, xlPart)
If Not r1 Is Nothing Then 'condition : si il existe au moins une occurrence de la recherche r1
pa1 = r1.Address 'définit l'adresse de la première occurrence trouvée
Do 'exécute
Range(r1, r1.Offset(0, 0)).Interior.ColorIndex = 6 'colore la ligne de jaune
Set r1 = pl.FindNext(r1) 'redéfinit la recherche r1 (occurrence suivante)
Loop While Not r1 Is Nothing And r1.Address <> pa1 'boucle tant qu'il existe des occurrences ailleurs qu'en pa1
End If 'fin de la condition
For Each cel In pl.Resize(, pl.Columns.Count - 1)
If cel.Interior.ColorIndex = xlNone Then Rows(cel.Row).Hidden = True 'si la cellule n'est pas colorée, masque la ligne de la cellule
Next cel 'prochaine celluile de la boucle
Range("A1").Select 'sélectionne la cellule A1
Application.ScreenUpdating = True 'affiche les changements à l'écran
Unload Me 'vide et ferme l'UserForm
End Sub