Masquer les w.e
chrisjo56
Messages postés
585
Statut
Membre
-
chrisjo56 Messages postés 585 Statut Membre -
chrisjo56 Messages postés 585 Statut Membre -
Bonjour,
Voici ce qui m'amène. Je suis en train de créer un fichier Excel qui comptabilise des données sur une année. J'ai fait un onglet par mois et un dernier de synthèse qui additionne les totaux de chaque mois. Jusque là tout va bien ;-)
J'aimerais améliorer ce fichier en enlevant les week-end. J'ai commencé par masquer les colonnes correspondantes à des week-end mais il me semblerait plus judicieux de créer une macro qui le fasse pour moi et c'est là que ça coince car les macros et moi... je nai pratiquement aucune notion de VBA et j'ai fouiné sur le net pour trouver une macro. Problème, celle-ci ne fonctionne pas et me génère une erreur de compilation "next sans for". Retour sur la Toile où je trouve qu'en rajoutant un "End If" cela pourrait marcher. Je réessaye donc en insérant un "End If" juste avant "Next i" et là j'ai une erreur d'exécution 13 "Incompatibilité de type". Du coup, je suis complètement planté.
Sub masque()
Application.ScreenUpdating = False
For i = 1 To [A65000].End(xlUp).Row
If Weekday(Cells(i, 1)) = 1 Or Weekday(Cells(i, 1)) = 7 Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next i
End Sub
Sub demasque()
ActiveSheet.Cells.EntireRow.Hidden = False
End Sub
Si l'un d'entre vous peut me venir en aide, je lui en serais très reconnaissant.
D'avance merci.
PS : petite précision : je suis sous Excel 2003.
Voici ce qui m'amène. Je suis en train de créer un fichier Excel qui comptabilise des données sur une année. J'ai fait un onglet par mois et un dernier de synthèse qui additionne les totaux de chaque mois. Jusque là tout va bien ;-)
J'aimerais améliorer ce fichier en enlevant les week-end. J'ai commencé par masquer les colonnes correspondantes à des week-end mais il me semblerait plus judicieux de créer une macro qui le fasse pour moi et c'est là que ça coince car les macros et moi... je nai pratiquement aucune notion de VBA et j'ai fouiné sur le net pour trouver une macro. Problème, celle-ci ne fonctionne pas et me génère une erreur de compilation "next sans for". Retour sur la Toile où je trouve qu'en rajoutant un "End If" cela pourrait marcher. Je réessaye donc en insérant un "End If" juste avant "Next i" et là j'ai une erreur d'exécution 13 "Incompatibilité de type". Du coup, je suis complètement planté.
Sub masque()
Application.ScreenUpdating = False
For i = 1 To [A65000].End(xlUp).Row
If Weekday(Cells(i, 1)) = 1 Or Weekday(Cells(i, 1)) = 7 Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next i
End Sub
Sub demasque()
ActiveSheet.Cells.EntireRow.Hidden = False
End Sub
Si l'un d'entre vous peut me venir en aide, je lui en serais très reconnaissant.
D'avance merci.
PS : petite précision : je suis sous Excel 2003.
A voir également:
- Masquer les w.e
- Comment masquer les amis sur facebook - Guide
- Masquer conversation whatsapp - Guide
- Comment appeler en masquer - Guide
- Masquer commande amazon - Guide
- Comment masquer une photo dans la galerie - Guide
2 réponses
bonjour
Tes 2 macros fonctionnent tout à fait correctement : la seule chose à rajouter serait de mettre au début de la première la ligne suivante afin de réserver ta variable "i" qui évolue avec la ligne traitée :
Dim i as Long
Par contre, si cela ne fonctionne pas, c'est sans doute que tu as des cellules qui ne sont pas au format date et donc je te propose de modifier ainsi :
En mettant le paramètre 2 la fonction Weekday commence au lundi et donc le test est simplifié.
Tes 2 macros fonctionnent tout à fait correctement : la seule chose à rajouter serait de mettre au début de la première la ligne suivante afin de réserver ta variable "i" qui évolue avec la ligne traitée :
Dim i as Long
Par contre, si cela ne fonctionne pas, c'est sans doute que tu as des cellules qui ne sont pas au format date et donc je te propose de modifier ainsi :
Sub masque()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To [A65000].End(xlUp).Row
If Not IsDate(Cells(i, 1)) Then
MsgBox "date invalide " & Cells(i, 1)
Else
If Weekday(Cells(i, 1), 2) > 5 Then
Cells(i, 1).EntireRow.Hidden = True
End If
End If
Next i
End Sub
En mettant le paramètre 2 la fonction Weekday commence au lundi et donc le test est simplifié.
bonjour
comment faire la recherche sur les colonnes de A à IV ?
Tu veux masquer les colonnes qui sur n'importe quelle ligne ont une date week-end ?
Effectivement avec tes macros basées sur les lignes je n'avais pas noté le mot colonne dans ta question.
Essaies alors avec ces 2 macros modifiées
comment faire la recherche sur les colonnes de A à IV ?
Tu veux masquer les colonnes qui sur n'importe quelle ligne ont une date week-end ?
Effectivement avec tes macros basées sur les lignes je n'avais pas noté le mot colonne dans ta question.
Essaies alors avec ces 2 macros modifiées
Sub masque()
Dim col As Integer
Dim lig As Long
Application.ScreenUpdating = False
For col = 1 To Cells.SpecialCells(xlCellTypeLastCell).Column
For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
If IsDate(Cells(lig, col)) Then
If Weekday(Cells(lig, col), 2) > 5 Then
Cells(lig, col).EntireColumn.Hidden = True
Exit For
End If
End If
Next lig
Next col
End Sub
Sub demasque()
ActiveSheet.Cells.EntireColumn.Hidden = False
End Sub
Merci pour cette réponse. Effectivement ces 2 macros fonctionnent mais seulement si les dates sont disposées sur des lignes. Dans mon cas, elles sont en colonnes et j'ai essaye de changer Row en Column mais rien n'y fait. Ma dernière question est donc : comment faire la recherche sur les colonnes de A à IV ?
Bonne soirée et... à bientôt ?