Encore une Case
Le
Jacquouille

Bonjour,
Dans ce filet de macro, appelé via une "private sub", le PC ouvre la feuille
baptisée 2013 (merci Denis)
Ensuite, il me colorie d'abord les dates d'anniversaire et de congés en
général (Pâques, Noël .)
Puis, colorie la date du jour.
Problème: dans quelques jours, il y aura le changement d'année. Ce sera Ok
pour le choix de la feuille (re-merci Denis), mais les dates
Comment puis-je faire comprendre à ce gros nigaud (le PC) qu'il doit faire
41282+365 (et, mieux: 366 pour les années bissextiles)?
N'y aurait-il pas moyen de faire un truc du genre : case 41282Êse +nb
jours de l'année du nom de la feuille?
Sub calend()
Worksheets(CStr(Year(Date))).Select ' Merci Denis
For Each C In Range("A2:L32")
C.Interior.ColorIndex = xlnonne ' enlève toutes les couleurs
If [C] <> "" Then
If Weekday(C) = 7 Or Weekday(C) = 1 Then C.Interior.ColorIndex = 44
End If ' colorie les WE
Select Case CLng(C.Value) 'Case C.Value + met en couleur
différentes dates
Case 41282, 41298, 41364, 41365, 41402, 41476, 41487, 41498,
41501, 41579, 41589, 41633
C.Interior.ColorIndex = 38
End Select
If [C] = Date Then C.Interior.ColorIndex = 42 ' colorie la date du jour
Next
End Sub
http://cjoint.com/?CLvqm5ob7fG
Déjà merci
Bon WE à tous.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
Dans ce filet de macro, appelé via une "private sub", le PC ouvre la feuille
baptisée 2013 (merci Denis)
Ensuite, il me colorie d'abord les dates d'anniversaire et de congés en
général (Pâques, Noël .)
Puis, colorie la date du jour.
Problème: dans quelques jours, il y aura le changement d'année. Ce sera Ok
pour le choix de la feuille (re-merci Denis), mais les dates
Comment puis-je faire comprendre à ce gros nigaud (le PC) qu'il doit faire
41282+365 (et, mieux: 366 pour les années bissextiles)?
N'y aurait-il pas moyen de faire un truc du genre : case 41282Êse +nb
jours de l'année du nom de la feuille?
Sub calend()
Worksheets(CStr(Year(Date))).Select ' Merci Denis
For Each C In Range("A2:L32")
C.Interior.ColorIndex = xlnonne ' enlève toutes les couleurs
If [C] <> "" Then
If Weekday(C) = 7 Or Weekday(C) = 1 Then C.Interior.ColorIndex = 44
End If ' colorie les WE
Select Case CLng(C.Value) 'Case C.Value + met en couleur
différentes dates
Case 41282, 41298, 41364, 41365, 41402, 41476, 41487, 41498,
41501, 41579, 41589, 41633
C.Interior.ColorIndex = 38
End Select
If [C] = Date Then C.Interior.ColorIndex = 42 ' colorie la date du jour
Next
End Sub
http://cjoint.com/?CLvqm5ob7fG
Déjà merci
Bon WE à tous.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
Pour faire + 1 année (bissextile ou non) :
Dat = DateSerial(Year(41282) + 1, Month(41282), Day(41282))
Daniel
Pourquoi ne pas masquer une feuille et d'y mettre tes dates de cette manière
:
et tu remplaces les 1 par le mois et le jour de chacune de tes dates.
ne pas oublier que dans la fonction date c'est l'année, le mois et le jour.
En A1
ÚTE(ANNEE(AUJOURDHUI());1;1)
En A2
ÚTE(ANNEE(AUJOURDHUI());1;1)
En A3
ÚTE(ANNEE(AUJOURDHUI());1;1)
Pour masquer la feuille, elle ne sera plus accessible via l'interface
de la feuille de calcul
Worksheets("NomAMasquer").Visible = xlSheetVeryHidden
Et ta procédure devient ceci. Et cela est valide jusqu'à l'an 9999
Peut-être prendras-tu ta retraite avant!!! ;-)
'--------------------------------------------------------
Sub calend()
Worksheets(CStr(Year(Date))).Select
For Each c In Range("A2:L32")
' enlève toutes les couleurs
c.Interior.ColorIndex = xlnonne
If [c] <> "" Then
' colorie les WE
If Weekday(c, 2) > 5 Then
c.Interior.ColorIndex = 44
End If
'Vérifie si la date C existe dans la
'feuille masquée dans A1:A12
With Worksheets("NomAMasquer")
If IsNumeric(Application.Match(c, .Range("A1:A12"), 0)) Then
c.Interior.ColorIndex = 38
End If
End With
End If
If [c] = Date Then c.Interior.ColorIndex = 42 ' colorie la date du
jour
Next
End Sub
'--------------------------------------------------------
Il est vrai que c'est une bonne façon d'ajouter 1 an.
Merci pour cette approche que je garde
Bonne soirée
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"DanielCo" a écrit dans le message de groupe de discussion :
l94dvq$n84$
Bonjour,
Pour faire + 1 année (bissextile ou non) :
Dat = DateSerial(Year(41282) + 1, Month(41282), Day(41282))
Daniel
Il suffit de bien poser sa question... -)
Cette approche via la feuille masquée (cousine du Concombre du même nom) où
les dates sont écrites à partir de l'année d'aujourd'hui() est géniale.
Tout fonctionne à merveille, comme je le désirais.
Cela est même mieux et plus concis pour badigeonner les WE.
Cette démarche me parait un peu parente de celle de Série.Jours.Ouvrés qui
va consulter une liste de dates. GENIAL !
Sauf ma pension -(
Heureusement que j'ai été prudent et que je l'ai prise en 2010.-))
Grand merci à toi
Bonne soirée et surtout un bon WE.
RV en 9.999 pour débugger la macro. -)
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
l94f32$pra$
Bonjour,
Pourquoi ne pas masquer une feuille et d'y mettre tes dates de cette manière
:
et tu remplaces les 1 par le mois et le jour de chacune de tes dates.
ne pas oublier que dans la fonction date c'est l'année, le mois et le jour.
En A1
ÚTE(ANNEE(AUJOURDHUI());1;1)
En A2
ÚTE(ANNEE(AUJOURDHUI());1;1)
En A3
ÚTE(ANNEE(AUJOURDHUI());1;1)
Pour masquer la feuille, elle ne sera plus accessible via l'interface
de la feuille de calcul
Worksheets("NomAMasquer").Visible = xlSheetVeryHidden
Et ta procédure devient ceci. Et cela est valide jusqu'à l'an 9999
Peut-être prendras-tu ta retraite avant!!! ;-)
'--------------------------------------------------------
Sub calend()
Worksheets(CStr(Year(Date))).Select
For Each c In Range("A2:L32")
' enlève toutes les couleurs
c.Interior.ColorIndex = xlnonne
If [c] <> "" Then
' colorie les WE
If Weekday(c, 2) > 5 Then
c.Interior.ColorIndex = 44
End If
'Vérifie si la date C existe dans la
'feuille masquée dans A1:A12
With Worksheets("NomAMasquer")
If IsNumeric(Application.Match(c, .Range("A1:A12"), 0)) Then
c.Interior.ColorIndex = 38
End If
End With
End If
If [c] = Date Then c.Interior.ColorIndex = 42 ' colorie la date du
jour
Next
End Sub
'--------------------------------------------------------
Pourquoi utiliser du VBA ?
La MFC fait très bien cela....
http://cjoint.com/?CLvu1pzKEcz
--
Salutations
JJ
"Jacquouille"
C'est vrai que la MEFC fait bien cela.
J'avais d'ailleurs commencé avec. Tu as pu t'en rendre compte à la ligne 32
où la formule se trouve écrite.
Les formules que tu emploies sont meilleures que les miennes, mais il
faudrait y ajouter un "si(estvide(a3)..." afin de contourner les fins de
mois difficiles (29,30 et 31 FEV ainsi que les 31 avril,juin, sept et
nov.....
Merci pour cette bonne approche. Je note tes formules.
Bonne fin de WE
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Jacky" a écrit dans le message de groupe de discussion :
52b5f23a$0$2114$
Hello Jacques
Pourquoi utiliser du VBA ?
La MFC fait très bien cela....
http://cjoint.com/?CLvu1pzKEcz
--
Salutations
JJ
"Jacquouille" l94bsl$i1u$
Connaissez-vous les calendriers de Jacques Boisgontier, et son calendrier
Annuel
Je les utilise beaucoup et j'ai créé votre calendrier sans VBA pour la MEFC
Mais la formule de Jacky est meilleure et plus simple.
Voir cjoint http://cjoint.com/?CLvwrkU5wGl
Joyeux Noël et Bonne Année
albertri-at-videotron.ca.invalid
http://boisgontierjacques.free.fr/fichiers/Matriciel/CalendrierAnnuel.xls
"Jacky" news:52b5f23a$0$2114$
Si tu souhaites plus complet tu peux faire référence à celui-ci
http://cjoint.com/?CLvxHd0JjnV
--
Salutations
JJ
"Jacquouille"
Le 3° Jacques fait bien les choses aussi.
Cependant, je trouve plus élégant de mettre un si(estvide(a3); ..... que
mettre le lettrage en blanc. Pour peu que l'on veuille colorer le fond du
calendrier et qu'on ne sache pas bricoler la MEFC .....
La formule de Jacky est plus mieux, AMHA.
Mais, merci pour cette approche.
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Albert" a écrit dans le message de groupe de discussion :
l950ur$5vb$
Bonsoir /Bonjour Jacquouille et Jacky
Connaissez-vous les calendriers de Jacques Boisgontier, et son calendrier
Annuel
Je les utilise beaucoup et j'ai créé votre calendrier sans VBA pour la MEFC
Mais la formule de Jacky est meilleure et plus simple.
Voir cjoint http://cjoint.com/?CLvwrkU5wGl
Joyeux Noël et Bonne Année
albertri-at-videotron.ca.invalid
http://boisgontierjacques.free.fr/fichiers/Matriciel/CalendrierAnnuel.xls
"Jacky" news:52b5f23a$0$2114$
Bonjour / Bonsoir
C'est vrai qu'un si(estvide(a3); est plus élégant que mettre lle lettrage
en blanc mais avec la matricielle de JB elle n'est pas vide.
Mais ce que je trouvais difficile c'est de mettre le numéro du jour pour
2013 et de rajouter 365 pour 2014 et ainsi refaire ce calcul pour chaque
année à venir, pour cette raison la MEFC de Jacky esst disons beaucoup plus
mieux.
Permettez moi de continuer à suivre vos intéressants projets.
--
albertri-at-videotron.ca.invalid