Public Sub CalendrierJrsFeriesAnneeInit(AnneeDuCal) 'Tableau Jours Fériés(Init pour une année)
ReDim CalendrierJrsFeriesAnnee(1 To 31, 1 To 12)
'calcul dimanche de Pâques (fonction anglophone 1900-9999)
Dim DatePaque As Date, DateAscension As Date, DatePentecote As Date
'A% = AnneeDuCal Mod 19: B% = AnneeDuCal \ 100: C% = AnneeDuCal Mod 100
'D% = (19 * A% + B% - (B% \ 4) - ((B% - ((B% + 8) \ 25) + 1) \ 3) + 15) Mod 30
'E% = (32 + 2 * ((B% Mod 4) + (C% \ 4)) - D% - (C% Mod 4)) Mod 7
'F% = (D% + E% - 7 * ((A% + 11 * D% + 22 * E%) \ 451) + 114)
'direct DatePaques = DateSerial(AnneeDuCal, F% \ 31, (F% Mod 31) + 1)
Golden% = (AnneeDuCal Mod 19) + 1: Century% = AnneeDuCal \ 100 + 1
LeapDayCorrection% = 3 * Century% \ 4 - 12
SynchWithMoon% = (8 * Century% + 5) \ 25 - 5
Sunday% = 5 * CLng(AnneeDuCal) \ 4 - LeapDayCorrection% - 10
Epact% = (11 * Golden% + 20 + SynchWithMoon% - LeapDayCorrection%) Mod 30
If Epact% < 0 Then Epact% = Epact% + 30
If Epact% = 24 Or (Epact% = 25 And Golden% > 11) Then Epact% = Epact% + 1
Jpaq% = 44 - Epact%: If Jpaq% < 21 Then Jpaq% = Jpaq% + 30
Jpaq% = Jpaq% + 7 - ((Sunday% + Jpaq%) Mod 7)
'direct > fnPAQUES = DateSerial(AnneeDuCal, 3, Jpaq%)
If Jpaq% > 31 Then MPaq% = 4: Jpaq% = Jpaq% - 31 Else MPaq% = 3
'Pâques / Ascension / Pentecôte
DatePaque = Jpaq% & " " & MPaq% & " " & AnneeDuCal
DateAscension = DatePaque + 39: DatePentecote = DatePaque + 49
Jasc% = Day(DateAscension): Masc% = Month(DateAscension)
Jpent% = Day(DatePentecote): Mpent% = Month(DatePentecote)
JLpaq% = Day(DatePaque + 1): MLpaq% = Month(DatePaque + 1)
JLpent% = Day(DatePentecote + 1): MLpent% = Month(DatePentecote + 1)
CalendrierJrsFeriesAnnee(1, 1) = "Nouvel an"
CalendrierJrsFeriesAnnee(1, 5) = "Fête du Travail"
CalendrierJrsFeriesAnnee(8, 5) = "Victoire 1945"
CalendrierJrsFeriesAnnee(14, 7) = "Fête Nationale"
CalendrierJrsFeriesAnnee(15, 8) = "Assomption"
CalendrierJrsFeriesAnnee(1, 11) = "Toussaint"
CalendrierJrsFeriesAnnee(11, 11) = "Armistice 1918"
CalendrierJrsFeriesAnnee(25, 12) = "Noël"
'deux jours fériés peuvent tomber le même jour Exp "1 Mai 2008" "Fête du Travail et Ascension"
CalendrierJrsFeriesAnnee(Jpaq%, MPaq%) = CalendrierJrsFeriesAnnee(Jpaq%, MPaq%) & " Pâque"
CalendrierJrsFeriesAnnee(JLpaq%, MLpaq%) = CalendrierJrsFeriesAnnee(JLpaq%, MLpaq%) & " Lund.Pâque"
CalendrierJrsFeriesAnnee(Jasc%, Masc%) = CalendrierJrsFeriesAnnee(Jasc%, Masc%) & " Ascension"
CalendrierJrsFeriesAnnee(Jpent%, Mpent%) = CalendrierJrsFeriesAnnee(Jpent%, Mpent%) & " Pentecôte"
CalendrierJrsFeriesAnnee(JLpent%, MLpent%) = CalendrierJrsFeriesAnnee(JLpent%, MLpent%) & " Lund.Pentecôte"
End Sub