Sub Macro1()
Dim be As String 'déclare la variable be (boîte d'entrée)
Dim x As Integer 'déclare la variable x (incrément d'onglet)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim tb() As String 'déclare la variable tb (TaBleau)
Dim y As Long 'déclare la variable y (élément du tableau)
Dim vt As Range 'déclare la variable vt (Valeurs Trouvées)
be = InputBox("Tapez la donnée à supprimer", "SUPRRESION DE LIGNES") 'définit la boîte d'entrée
If be = "" Then Exit Sub 'si la boîte d'entrée n'est pas renseignée, sort de la procédure
Application.ScreenUpdating = False 'masque les changements à l'écran
For x = 1 To Sheets.Count 'boucle 1 : sur tous les onglets du classeur
With Sheets(x) 'prend en compte l'onglet
y = 0 'réinitialise la variable y
pa = "" 'réinitialise la variable pa
Set r = .Cells.Find(be, , xlValues, xlWhole) 'définit la recherche
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
pa = r.Address 'définit la variable pa
Do 'exécute
ReDim Preserve tb(y) 'redimensionne le tableau tb
tb(y) = r.Row 'attribue une valeur à la variable indéxée tb(y) (le numéro de ligne)
y = y + 1 'incrémente y de +1
Set r = .Cells.FindNext(r) 'reféfinit la recherche r (Prochaine occurrence)
'boucle tant qu'il existe des occurrences ailleurs qu'en pa
Loop While Not r Is Nothing And r.Address <> pa
End If 'fin de la condition
Set vt = .Rows(tb(0)) 'définit la variable vt
For y = 1 To UBound(tb, 1) 'boucle 2 : sur tous les éléments du tableau tb (en partant du second
Set vt = Application.Union(vt, .Rows(tb(y))) 'redéfinit la variable vt
Next y 'prochain élément du tableau de la boucle 2
vt.Delete 'supprime les lignes contenant be
End With 'fin de la prise en compte de l'onglet
Next x 'prochain onglet de la boucle 1
Application.ScreenUpdating = True 'Affiche les changements à l'écran
End Sub