OVH Cloud OVH Cloud

Générer automatiquement un calendrier

11 réponses
Avatar
Philippe GIRARD
Comment faire pour g=E9n=E9rer automatiquement, =E0 partir=20
d'une liste de 1 =E0 n personnes dont les absences ont =E9t=E9=20
rentr=E9es au pr=E9alable, un calendrier ne pr=E9sentant que=20
les jours ouvr=E9s (avec les journ=E9es d'absence gris=E9s) et=20
tenant compte des ann=E9es bissextiles (ce qui ne semble=20
pas =EAtre le cas sous Excel 2002 puisque le mois de=20
f=E9vrier 2004 s'arr=EAte le 28...) ?
S'il s'agit d'une macro en VBA, il va falloir que je m'y=20
mette.
Bonne ann=E9e

1 réponse

1 2
Avatar
Clément Marcotte
que 2004 est bissextile,


Vrai

ce qui n'est pas pris en compte dans les
calculs de dates.


Faux

A1 B1 b1-a1
2003-01-01 2003-12-31 364
2002-12-31 2003-12-31 365

2004-01-01 2004-12-31 365
2003-12-31 2004-12-31 366

Caractéristique archi-connue d'Excel qui se conforme aux normes
économiques nord-américaines qui veulent que l'on compte l'intervalle
de temps à partir du lendemain d'une transaction.

Juste pour le fun.

Faire un calendrier pour février 2004 dans une feuille de calcul, à
partir de A1:

Sub CalendrierCivilise()
Dim lenumero As Integer, lemois As Integer
Dim lejour As Integer, lannee As Integer
Dim i As Byte, j As Byte, k As Byte, lalimite As Integer
Dim ladate As Double
Range("a1").Value = "Dim"
Range("B1").Value = "Lun"
Range("c1").Value = "Mar"
Range("d1").Value = "Mer"
Range("e1").Value = "Jeu"
Range("f1").Value = "Ven"
Range("g1").Value = "Sam"
lemois = Month(Date)
lannee = Year(Date)
lenumero = Weekday(DateSerial(lannee, lemois, 1))
lalimite = Day(DateSerial(lannee, lemois + 1, 1) - 1)
k = 1
For i = 2 To 7
If i > 2 Then
For j = 1 To 7
If k <= lalimite Then
Cells(i, j).Value = k
k = k + 1
Else
Exit For
End If
Next
Else
For j = lenumero To 7
Cells(2, j).Value = k
k = k + 1
Next
End If
Next
End Sub

1 2