Questions diverses sur macros
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:
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:
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:
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:
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.