Macro masquer lignes sur plusieurs feuilles
Bonsoir à tout le forum,
Je voudrais mettre en place une macro pour masquer des lignes sur plusieurs feuilles mais avec des critères différents permettant le masquage.
Sur une feuille cela dépend de la ligne L vide pour masquer, sur une autre feuille c'est la I, sur une autre c'est la T.
Avec la macro suivante, je cache sur chaque feuille. Comment faire pour cacher sur toutes avec une seule macro?
Sub Cacher()
Dim Plage As Range
Dim Cel As Range
With ActiveSheet: Set Plage = .Range(.Cells(2, 12), .Cells(.Rows.Count, 12).End(xlUp)): End With
With Sheets("Suivi Forfait Epilation"): Set Plage = .Range(.Cells(2, 9), .Cells(.Rows.Count, 9).End(xlUp)): End With
For Each Cel In Plage
If Cel.Value = "" Or Cel.Value = 0 Then Cel.EntireRow.Hidden = True
Next Cel
End SubEst-il également possible d'intégrer cette macro complète à une macro qui enregistre mon fichier à la fermeture?
Sub Enreg()
Dim Path As String, valeur As String
Path = ActiveWorkbook.Path & "\"
valeur = "Fichier Client" & " - " & Format(Date, "yyyy-mmyy") & ".xlsm"
ThisWorkbook.SaveAs Path & valeur
End SubMerci pour votre aide
Bonsoir crazylib
Pour le masquage ou non des lignes :
Sub MasquerLignes()
Const Feuilles = "Suivi Forfait Epilation;Feuil2;Feuil3" ' liste des feuilles concernées
Const Colonnes = "I;12;T" ' pour chaque feuille, la colonne à examiner (lettre/nombre)
Dim tCol, tFeuil, col, i&, plage As Range, x
Application.ScreenUpdating = False
tCol = Split(Colonnes, ";"): tFeuil = Split(Feuilles, ";") ' transformer les constantes texte en tableau
For i = 0 To UBound(tFeuil) ' boucle sur les feuilles
With Sheets(tFeuil(i)) ' avec la feuille concernée i
If IsNumeric(tCol(i)) Then col = Val(tCol(i)) Else col = tCol(i) ' la colonne à examiner est la colonne col
Set plage = .Range(.Cells(2, col), .Cells(.Rows.Count, col).End(xlUp)) ' plage à examiner
For Each x In plage: x.EntireRow.Hidden = (x = "" Or x = 0): Next ' boucle de masquage ou non
End With
Next i
End SubRe,
Pour supprimer les lignes avant enregistrement :
Sub Enreg()
Dim Path As String, valeur As String
MasquerLignes ' appel de la procédure de masquage des lignes
Path = ActiveWorkbook.Path & "\"
valeur = "Fichier Client" & " - " & Format(Date, "yyyy-mmyy") & ".xlsm"
ThisWorkbook.SaveAs Path & valeur
End SubUn grand merci. C'est exactement ça.
Une petite question toutefois.
Lorsque je fais une modification et que je ferme le fichier, si je refuse l'enregistrement, la macro se met en erreur. Je sais qu'il n'est pas logique de faire une modification et de ne pas vouloir l'enregistrer mais si une de mes collègues fait une erreur sur le fichier et qu'elle ne veut pas enregistrer cette erreur est-il possible de modifier le macro enreg pour que si je refuse l'enregistrement la macro s'arrête?