OVH Cloud OVH Cloud

Remplir un calendrier

38 réponses
Avatar
Apitos
Bonjour =E0 tous,

J'aimerais remplir un calendrier avec du code VBA en utilisant les code sui=
vant :

'-----------------
Sub test()
Dim Mois As Integer, Jour As Integer, m As Long
Dim dDate As Date, Ligne As Byte
=20
Ligne =3D 3
For m =3D 1 To 12
dDate =3D Format(DateSerial(Year(Date), Month(Date), 1), "dd/mm/yy"=
)
Mois =3D m
MsgBox "Mois : " & m
Jour =3D 0
=20
With Feuil2
.Range("A1").Value =3D Application.Proper(Format(DateSerial(201=
5, Mois, 1), "mmmm"))
=20
' Efacement de la zone du mois
[modele].Offset(3).ClearContents
=20
=20
For i =3D 3 To 8
For j =3D 1 To 7
Debug.Print "Colonne : " & .Cells(i, j).Column, "Weekda=
y : " & Weekday(dDate, 2)
Debug.Print "Mois : " & Month(DateSerial(2015, Mois, Jo=
ur)), "Mois jour-1 : " & Month(DateSerial(2015, Mois, Jour - 1))
If i =3D 3 And .Cells(i, j).Column < Weekday(dDate, 2) =
Then
Cells(i, j) =3D ""
Else
Jour =3D Jour + 1
If Jour <=3D Day(DateSerial(2015, Mois, 0)) Then
.Cells(i, j) =3D Jour
If Jour =3D 1 Then .Cells(i, j).Font.ColorIndex=
=3D 3
End If
End If
Next j
If j =3D 8 And Application.CountA(.Range(.Cells(i, 1), .Cel=
ls(i, 8))) > 0 Then
.Cells(i, j) =3D ""
.Cells(i, 8) =3D Application.WeekNum(DateSerial(2015, M=
ois, _
Applicati=
on.Min(.Range(.Cells(i, 3), .Cells(i, 8)))))
=20
End If
=20
Next i
If m Mod 2 <> 0 Then
[modele].Copy Feuil1.Range("A" & Ligne)
=20
Else
[modele].Copy Feuil1.Range("J" & Ligne)
Ligne =3D Ligne + 9
End If
End With
Next m
End Sub
'-----------------

Mais malheureusement les mois ne sont pas remplis correctement ainsi que le=
s num=E9ros des semaines !

http://cjoint.com/?ECmwRk7r52n

Merci d'avance.

8 réponses

1 2 3 4
Avatar
DanielCo
Non, le 01/01/52 est un mardi, donc semaine 1 (4 jours en 1952) et la
dernière est la semaine 52 commençant le 22/12/52 et finissant le
28/12/52. La semaine suivante ayant 4 jours en 1953 est la semaine 1 de
1953.
Daniel


c'est désastreux à l'an 1956

1 janvier --> 52
30 décembre --> 52
31 décembre --> 1

les 2 formules (LL et vba) sont erronnées

isabelle

Le 2015-03-17 09:33, isabelle a écrit :
bonne idée Patrick, merci!
j'ai ajouté un test avec la formule du grand chef à quatre plumes

http://cjoint.com/?ECroQVEPNz3

isabelle

Le 2015-03-17 08:45, Patrick a écrit :
la bonne n'est elle pas celle du grand Laurent LONGRE sur le site de
Misange
?
Avatar
MichD
Bonjour Isabelle,

Formule pour trouver le numéro de la semaine à partir d'une date :
Cette formule est valide pour la norme iso et pour le calendrier 1900 et
1904.

Cette formule est de : Daniel MAHER
=1+ENT(MIN(MOD(A1-DATE(ANNEE(A1)+{-1;0;1};1;5)+JOURSEM(DATE(ANNEE(A1)+{-1;0;1};1
;3));734))/7)
Avatar
Jacquouille
Effectivement, les 1,2 et 3 janvier 2016 tombent dans la semaine 53 de 2015.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"DanielCo" a écrit dans le message de groupe de discussion :
me9ord$lh1$

Tout à fait. 52*764 seulement, donc les premiers jours peuvent tomber
en semaine 52 ou 53 de l'année précédente ou en semaine 53, à la fin de
l'année.
Daniel


merci! Daniel,
c'est normal s'il y a une 53 ème semaine ?
isabelle

Le 2015-03-17 08:10, DanielCo a écrit :
Nickel,
Isabelle.
Daniel
PS. Oui, je sais, la rime est pauvre ;-(((


bonjour Daniel,

elle est dans la macro:

' numéro de semaine iso
D = Int(DateSerial(ans, i, c))
noSem = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3),
1, 1)
noSem = ((D - noSem - 3 + (Weekday(noSem) + 1) Mod 7)) 7
+ 1
.Cells(c.Row, 8) = noSem

je l'ai pigé sur le forum,

isabelle

Le 2015-03-17 05:02, DanielCo a écrit :
Bonjour Isabelle,
Elle est où, ta formule ?
Cordialement.
Daniel


hé ho, y'a plus personne pour vérifier ma formule pour le numéro de
semaine
iso ?

isabelle

Le 2015-03-16 14:39, isabelle a écrit :
voilà c'est corrigé

http://cjoint.com/?ECqtXKVjB7N

isabelle














---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
isabelle
non non je parlais de l'année 1956 et non 1953
au fait si tu as xl2013 peut tu vérifier ces dates avec NO.SEMAINE.ISO

1956-01-01
1956-01-02
1956-01-03
1956-01-04
1956-01-05
1956-01-06
1956-01-07
1956-12-30
1956-12-31

merci!
isabelle

Le 2015-03-17 13:48, DanielCo a écrit :
Non, le 01/01/52 est un mardi, donc semaine 1 (4 jours en 1952) et la dernière
est la semaine 52 commençant le 22/12/52 et finissant le 28/12/52. La semaine
suivante ayant 4 jours en 1953 est la semaine 1 de 1953.
Daniel


c'est désastreux à l'an 1956

1 janvier --> 52
30 décembre --> 52
31 décembre --> 1

les 2 formules (LL et vba) sont erronnées

isabelle

Le 2015-03-17 09:33, isabelle a écrit :
bonne idée Patrick, merci!
j'ai ajouté un test avec la formule du grand chef à quatre plumes

http://cjoint.com/?ECroQVEPNz3

isabelle

Le 2015-03-17 08:45, Patrick a écrit :
la bonne n'est elle pas celle du grand Laurent LONGRE sur le site de Misange
?
Avatar
DanielCo
J'obtiens :
dimanche 1 janvier 1956 52
lundi 2 janvier 1956 1
mardi 3 janvier 1956 1
mercredi 4 janvier 1956 1
jeudi 5 janvier 1956 1
vendredi 6 janvier 1956 1
samedi 7 janvier 1956 1
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
Daniel



non non je parlais de l'année 1956 et non 1953
au fait si tu as xl2013 peut tu vérifier ces dates avec NO.SEMAINE.ISO

1956-01-01
1956-01-02
1956-01-03
1956-01-04
1956-01-05
1956-01-06
1956-01-07
1956-12-30
1956-12-31

merci!
isabelle

Le 2015-03-17 13:48, DanielCo a écrit :
Non, le 01/01/52 est un mardi, donc semaine 1 (4 jours en 1952) et la
dernière
est la semaine 52 commençant le 22/12/52 et finissant le 28/12/52. La
semaine
suivante ayant 4 jours en 1953 est la semaine 1 de 1953.
Daniel


c'est désastreux à l'an 1956

1 janvier --> 52
30 décembre --> 52
31 décembre --> 1

les 2 formules (LL et vba) sont erronnées

isabelle

Le 2015-03-17 09:33, isabelle a écrit :
bonne idée Patrick, merci!
j'ai ajouté un test avec la formule du grand chef à quatre plumes

http://cjoint.com/?ECroQVEPNz3

isabelle

Le 2015-03-17 08:45, Patrick a écrit :
la bonne n'est elle pas celle du grand Laurent LONGRE sur le site de
Misange
?
Avatar
isabelle
je trouve ça plutôt bizarre comme résultat,

1956-01-01 52
1956-12-30 52
1956-12-31 1

isabelle

Le 2015-03-17 17:13, DanielCo a écrit :
J'obtiens :
dimanche 1 janvier 1956 52
lundi 2 janvier 1956 1
mardi 3 janvier 1956 1
mercredi 4 janvier 1956 1
jeudi 5 janvier 1956 1
vendredi 6 janvier 1956 1
samedi 7 janvier 1956 1
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
Daniel
Avatar
DanielCo
Non :
dimanche 1 janvier 1956 52
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
le 01/01/56 fait partie de la semaine 52 de 1955
le 30/12/56 ests le dernier jour de la semaine 52 de 1956
le 31/12/56 est le premier jour de la semaine 1 de 1957
Daniel


je trouve ça plutôt bizarre comme résultat,

1956-01-01 52
1956-12-30 52
1956-12-31 1

isabelle

Le 2015-03-17 17:13, DanielCo a écrit :
J'obtiens :
dimanche 1 janvier 1956 52
lundi 2 janvier 1956 1
mardi 3 janvier 1956 1
mercredi 4 janvier 1956 1
jeudi 5 janvier 1956 1
vendredi 6 janvier 1956 1
samedi 7 janvier 1956 1
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
Daniel
Avatar
isabelle
ok Daniel
j'en conclue que la formule de Laurent et la formulation vba de mon fichier est
correct.
encore Merci!
isabelle

Le 2015-03-17 17:28, DanielCo a écrit :
Non :
dimanche 1 janvier 1956 52
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
le 01/01/56 fait partie de la semaine 52 de 1955
le 30/12/56 ests le dernier jour de la semaine 52 de 1956
le 31/12/56 est le premier jour de la semaine 1 de 1957
Daniel


je trouve ça plutôt bizarre comme résultat,

1956-01-01 52
1956-12-30 52
1956-12-31 1

isabelle

Le 2015-03-17 17:13, DanielCo a écrit :
J'obtiens :
dimanche 1 janvier 1956 52
lundi 2 janvier 1956 1
mardi 3 janvier 1956 1
mercredi 4 janvier 1956 1
jeudi 5 janvier 1956 1
vendredi 6 janvier 1956 1
samedi 7 janvier 1956 1
dimanche 30 décembre 1956 52
lundi 31 décembre 1956 1
Daniel
1 2 3 4