Bonjour Gui_gui, bonjour le forum,
L'événementielle Change ci-dessous, à placer dans le composant de l'onglet concerné (Feuil1 (Feuil1), par exemple) devrait convenir. Il agit chaque fois que tu changes la valeur dans la plage A2:A100 :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
'si le changement a lieu ailleurs que dans la plage A2:A100, sort de la procédure
If Application.Intersect(Target, Range("A2:A100")) Is Nothing Then Exit Sub
'affiche/ masque la feuille en fonction de la valeur de la cible (cellule modifiée)
Rows(Target.Row).Hidden = UCase(Target.Value) = "MASQUE"
End Sub
Si plus tard tu dois réafficher toutes les lignes, dans un module standard (Module1, par exemple) :
Sub Affich()
Dim O As Worksheet 'déclare la variable O (Onglet)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
O.Rows.Hidden = False 'affiche toutes les lignes de l'onglet
End Sub
Et si pour finir tu dois remasquer d'un coup toutes les lignes "Masque", dans le même module :
Sub Mask()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim I As Integer 'déclare la variable I
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
For I = 2 To 100 'boucle sur toutes les lignes I de l'onglet O (de 2 à 100)
O.Rows(I).Hidden = UCase(O.Cells(I, "A").Value) = "MASQUE" 'affiche/masque la ligne en fonction de la valeur de la cellule ligne I colonne A
Next I 'prochaine ligne de la boucle
End Sub
Les deux derniers code devront être lancés, ce ne sont pas des événementielles...