VBA effacer les cellules d'une plage correspondantes aux week-en
Mouftie
Messages postés
215
Date d'inscription
Statut
Membre
Dernière intervention
-
Mouftie Messages postés 215 Date d'inscription Statut Membre Dernière intervention -
Mouftie Messages postés 215 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travaille sur un planning, avec une feuille Modèle qui sert à créer les feuilles mensuelles. par défaut, tous les jours de la semaine ont des formules, mais quand je crée ma feuille mensuelle, je voudrais effacer les formules sur les Week-end et les jours fériés.
pour les week-end j'ai écrit
j'ai essayé
Est-ce que qq'1 peut m'aider svp ?
Merci
Je travaille sur un planning, avec une feuille Modèle qui sert à créer les feuilles mensuelles. par défaut, tous les jours de la semaine ont des formules, mais quand je crée ma feuille mensuelle, je voudrais effacer les formules sur les Week-end et les jours fériés.
pour les week-end j'ai écrit
Set Plg = [C5:AG120]mais comment faire la même chose pour les jours fériés
For Each c In Plg
If Weekday(Cells(3, c.Column), vbMonday) > 5 Then
c.ClearContents
End If
Next c
j'ai essayé
Set Plg = [C5:AG120]mais ça ne fonctionne pas
For Each c In Plg
If Weekday(Cells(5, c.Column), vbMonday) > 5 Or Application.CountIf([FERIES], Cells(5, c.Column)) > 0 Then
c.ClearContents
End If
Next c
Est-ce que qq'1 peut m'aider svp ?
Merci
A voir également:
- Excel vba effacer une plage de cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Verrouiller cellules excel - Guide
- Word et excel gratuit - Guide
5 réponses
Bonjour,
D'après ce que je crois comprendre, les dates sont sur la ligne 3.
Ton instruction devrait être :
If Weekday(Cells(3, c.Column), vbMonday) > 5 Or Application.CountIf([FERIES], Cells(3, c.Column)) > 0 Then ...
A+
D'après ce que je crois comprendre, les dates sont sur la ligne 3.
Ton instruction devrait être :
If Weekday(Cells(3, c.Column), vbMonday) > 5 Or Application.CountIf([FERIES], Cells(3, c.Column)) > 0 Then ...
A+
Salam Mouftie.
J'ai travaillé avec un cas similaire (Planning de Permanence) où je ne devais écrire que dans les cellules qui correspondent à un weekend ou à un jour férié.
Mon idée à été de mettre en rouge (par macro) tous les weekend et jours fériés dans le planning (pour une meilleure visibilité) puis à chaque sélection de cellule, tester si la police est en rouge auquel cas c'est un weekend ou un jour férié et agir en conséquence.
Ci-joint un exemple : https://www.cjoint.com/?DJgpY2UVyZ4
J'espère que j'ai été utile :)
J'ai travaillé avec un cas similaire (Planning de Permanence) où je ne devais écrire que dans les cellules qui correspondent à un weekend ou à un jour férié.
Mon idée à été de mettre en rouge (par macro) tous les weekend et jours fériés dans le planning (pour une meilleure visibilité) puis à chaque sélection de cellule, tester si la police est en rouge auquel cas c'est un weekend ou un jour férié et agir en conséquence.
Ci-joint un exemple : https://www.cjoint.com/?DJgpY2UVyZ4
J'espère que j'ai été utile :)
Bonjour,
si FERIES est bien une plage nommée qui contient les dates des jours fériés alors cela doit fonctionner.
si FERIES est bien une plage nommée qui contient les dates des jours fériés alors cela doit fonctionner.
Bonjour Pilas31
Je te remercie de m'avoir répondu.
Je te confirme que FERIES est bien une plage nommée.
quand je crée ma feuille du mois, j'ai un message d'erreur : '13' Incompatibilité de type.
J'ai également mis le code suivant, dans la feuille modèle, pour empêcher l'écriture dans les zones WE et Fériés.
Je viens de faire un nouvel essai ; là ma feuille mois a bien été créée, mais d'une part je ne peux rien saisir dans mon planning (ça s'efface au fure et à mesure) et d'autre part, les formules dans les colonnes fériés n'ont pas été effacées
Merci de bien vouloir m'aider.
Je te remercie de m'avoir répondu.
Je te confirme que FERIES est bien une plage nommée.

quand je crée ma feuille du mois, j'ai un message d'erreur : '13' Incompatibilité de type.
J'ai également mis le code suivant, dans la feuille modèle, pour empêcher l'écriture dans les zones WE et Fériés.
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'ongletLà, je n'ai pas d'erreur, mais je ne peux rien saisir dans la feuille jour férié ou pas.
Dim c As Range
On Error Resume Next
Static noEvents As Boolean
If noEvents Then Exit Sub
Set Plg = Intersect(Intersect(Target, [A:AG]), [5:120])
For Each c In Plg
If Weekday(Cells(5, c.Column), vbMonday) > 5 Or Application.CountIf([FERIES], Cells(5, c.Column)) > 0 Then
noEvents = True
c.Value = Empty
noEvents = False
End If
Next c
On Error Resume Next
End Sub
Je viens de faire un nouvel essai ; là ma feuille mois a bien été créée, mais d'une part je ne peux rien saisir dans mon planning (ça s'efface au fure et à mesure) et d'autre part, les formules dans les colonnes fériés n'ont pas été effacées
Merci de bien vouloir m'aider.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir redaiwa et Gyrus.
Merci à vous 2
Gyrus, tu as parfaitement raison, j'ai confondu les dates et les données... ; maintenant mes 2 procédures fonctionnent, mais celle qui efface les formules déclenche la procédure évènement ce qui entraine un temps de réponse énorme, il faudrait que je passe par un tableau virtuel (array), mais là je tatonne pas mal, pour ne pas dire plus.
Je vais chercher encore.
Merci à vous 2
Gyrus, tu as parfaitement raison, j'ai confondu les dates et les données... ; maintenant mes 2 procédures fonctionnent, mais celle qui efface les formules déclenche la procédure évènement ce qui entraine un temps de réponse énorme, il faudrait que je passe par un tableau virtuel (array), mais là je tatonne pas mal, pour ne pas dire plus.
Je vais chercher encore.