1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim O As Worksheet 'déclare la variable O (Onglets)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim PL As Range 'déclare la variable PL (PLage)
Dim I As Integer 'déclare la variable I (Incrément)
If Target.Column <> 2 Then Exit Sub 'si la changement a lieu aillerus qu'en colonne 2 (=B), sort de la procédure
TV = Range("A1").CurrentRegion 'définit le tableau ds valeurs TV
Set PL = Range("A1") 'initialise la plage PL
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeur TV
If TV(I, 2) = "" Then 'condition : si la donnée ligne I colonne 2 de TV est vide
'définit la plage PL (la ligne I ou l'union de PL et de la ligne I)
Set PL = IIf(PL.Cells.Count = 1, Rows(I), Application.Union(PL, Rows(I)))
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
For Each O In Worksheets 'boucle sur tous les onglets O du classeur
If Not O.Name = "Sélection" Then 'condition : si l'onglet ne se nomme pas "Sélection"
O.Rows.Hidden = FASLE 'affiche touts les ligne de l'onglet
O.Range(PL.Address).EntireRow.Hidden = True 'masque les lignes de la plage PL
End If 'fin de la condition
Next O 'prochain onglet du classeur
End Sub |
Partager