Bonjour,

Je débute sur VBA Excel (voire VBA tout court ^^) donc ne m'en veuillez pas si j'ai du mal à m'exprimer...

J'ai une facture sous excel qui fallait rendre moins touffue.
La solution : une macro afficher toutes les cellules :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Sub AFFICHER()
Dim cellule As Range
    For Each cellule In Union(Range("E32:e35"), Range("e39:e43"), Range("e47:e48"), Range("e52"), Range("e55"))
    cellule.EntireRow.Hidden = False
    Next cellule
End Sub
J'ai trouvé ce code en farfouillant un peu, il y a peut être plus facile...

Ensuite une macro qui permet de masquer des lignes qui contiennent un cellule de référence vide (une quantité) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Sub MASQUER()
 
    Dim cellule As Range
    For Each cellule In Union(Range("E32:e35"), Range("e39:e43"), Range("e47:e48"), Range("e52"), Range("e55"))
    If cellule.Value = "" Then
    cellule.EntireRow.Hidden = True
    End If
    Next cellule
 
End Sub
Ca fonctionne bien, j'ai rajouté des boutons sur la feuille et ca marche aussi.

J'aimerai rajouter dans le code un autre critère que "", par exemple 0.
Si la cellule est vide ou contient un 0 alors il faut la masquer.

J'ai essayé avec Or mais ca ne masque pas la ligne ou la cellule de réf contient 0, seulement si c'est vide.



Ensuite, l'idéal serait de pouvoir automatiser le code AFFICHER à l'ouverture du classeur.
J'ai bien trouvé en cherchant le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Private Sub Workbook_Open()
Dim cellule As Range
    For Each cellule In Union(Range("E32:e35"), Range("e39:e43"), Range("e47:e48"), Range("e52"), Range("e55"))
    cellule.EntireRow.Hidden = False
    Next cellule
End Sub
Mais ca ne marche pas.

De même j'aimerai pouvoir automatiser le code MASQUER lors de l'impression :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim cellule As Range
    For Each cellule In Union(Range("E32:e35"), Range("e39:e43"), Range("e47:e48"), Range("e52"), Range("e55"))
    If cellule.Value = "" Then
    cellule.EntireRow.Hidden = True
    End If
    Next cellule
 
End Sub

Merci d'avance pour le coup de main.