Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
'si le double-clic a lieu dans la ligne 1, affiche toutes les lignes et colonnes et empêche le mode [Édition] lié au double-clic
If Target.Row = 1 Then Rows.Hidden = False: Columns.Hidden = False: Cancel = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim TEST As Boolean 'déclare la variable TEST
If Target.Row < 3 Then Exit Sub 'si e changement a lieu dans une ligne inférieure à 3, sort de la procédure
'si le changement a lieu ailleurs que dans les colonnes S à U, sort de la procédure
If Application.Intersect(Target, Columns("S:U")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False 'masque les rafraîchissement d'écran
TV = Range("A2").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
TEST = False 'initialise la variable TEST
For J = 19 To 21 'boucle 2 : sur les colonne 19 à 21 (=> colonnes S à U)
If TV(I, J) <> "" Then 'condition si la donnée ligne I colonne J de TV n'est pas vide
TEST = True 'redéfinit la variable TEST
Exit For 'sort de la boucle 2
End If 'fin de la condition
Next J 'prochaine colonne de la boucle 2
If TEST = False Then Rows(I).Hidden = True 'si TEST est [Faux], masque la ligne I
Next I 'prochaine ligne de la boucle 1
'masque les colonnes
Application.Union(Columns("C:E"), Columns("H:H"), Columns("N:R"), Columns("V:V")).EntireColumn.Hidden = True
End Sub