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 !
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 ?
DanielCo
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
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 ?
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 ?