Bonjour Florian,
voici quelques explications complémentaires :
c'est la sub privée HideLigs() qui fait tout le travail ; elle n'est jamais appelée directement par l'utilisateur ; elle est appelée par chacune des 3 autres subs, via un bouton de commande situé sur Feuil1 :
Sub ShowAll()
HideLigs 2
End Sub
Sub Show0()
HideLigs 1
End Sub
Sub Show1()
HideLigs 0
End Sub
* le bouton « Toutes les lignes » lance la macro ShowAll(), qui appelle HideLigs() avec le paramètre 2
* le bouton « Lignes 0 » lance la macro Show0(), qui appelle HideLigs() avec le paramètre 1
* le bouton « Lignes 1 » lance la macro Show1(), qui appelle HideLigs() avec le paramètre 0
ainsi, toute la suite est dans HideLigs(), selon la valeur de v (2 ; 1 ; ou 0) :
Private Sub HideLigs(v As Byte)
Dim dlig&, lig&: Application.ScreenUpdating = 0
Rows.Hidden = 0: If v = 2 Then Exit Sub
dlig = Cells(Rows.Count, 1).End(xlUp).Row
For lig = 1 To dlig
Rows(lig).Hidden = Cells(lig, 1) = v
Next lig
End Sub
Dim dlig&, lig&
; c'est l'abrégé de Dim dlig As Long, lig As Long
Application.ScreenUpdating = 0
; c'est idem que Application.ScreenUpdating = False
:
l'écran n'est plus mis à jour ➯ ça va plus vite ; est mis implicitement à True juste avant End Sub
Rows.Hidden = 0
; c'est idem que Rows.Hidden = False
➯ toutes les lignes sont affichées
* note que ce début est toujours effectué, quelle que soit la valeur du paramètre v
* note aussi que pour ShowAll(), on vient de faire ce qu'il faut, d'où sortie de sub :
If v = 2 Then Exit Sub
ainsi, c'est terminé pour le cas v = 2 ; la suite de la sub concerne uniquement les 2 autres cas 1 et 0
n'oublie pas qu'à ce stade, même pour 1 et 0, toutes les lignes sont affichées
dlig = Cells(Rows.Count, 1).End(xlUp).Row
: dernière ligne utilisée, selon la colonne A
(attention : ce calcul aurait pu être faussé si y'avait eu des lignes cachées en fin de colonne)
For lig = 1 To dlig
.. Next lig
: boucle pour toutes les lignes 1 à dlig
pour chaque ligne, faire cette seule instruction :
Rows(lig).Hidden = Cells(lig, 1) = v
; l'état Hidden (= caché) de la ligne lig
est mis à True ou False selon le résultat du test Cells(lig, 1) = v
:
* pour Show0() : v = 1 ➯ état vrai (donc caché) si Cells(lig, 1) = 1
état faux (donc visible) si y'a 0 en colonne A
* pour Show1() : v = 0 ➯ état vrai (donc caché) si Cells(lig, 1) = 0
état faux (donc visible) si y'a 1 en colonne A
dhany