Dim jFeries(1 To 11) As Variant
Public Sub CreateJF(D)
'Calcul des jours feries d'après Ole P Erlandsen
Année = Year(D)
If Année < 1900 Then Exit Sub
'remplit le tableau des jours fériés
jFeries(1) = CDate("1/1/" & Année) 'Jour de l'An
jFeries(2) = CDate(Evaluate("Round(Date(" & Année & ",4,mod(234-11*mod(" & Année & ",19),30))/7,)*7-6") + 1) 'Lundi Pâques
jFeries(3) = jFeries(2) + 38 'Jeudi Ascencion
jFeries(4) = jFeries(2) + 49 'Lundi Pentecôte
jFeries(5) = CDate("1/5/" & Année) '1er Mai
jFeries(6) = CDate("8/5/" & Année) '8 Mai
jFeries(7) = CDate("14/7/" & Année) '14 Juillet
jFeries(8) = CDate("15/8/" & Année) '15 Août
jFeries(9) = CDate("1/11/" & Année) 'Toussaint
jFeries(10) = CDate("11/11/" & Année) '14-18
jFeries(11) = CDate("25/12/" & Année) 'Noël
'Debug.Print "Fériés : " & jFeries(1), jFeries(2), jFeries(3), jFeries(4)
End Sub
Public Function IsWork(D As Date) As Boolean
CreateJF (D)
IsWork = False
'Debug.Print D, VarType(D), VarType(jFeries(1)), Application.Match(D, jFeries, 0)
'f = IsError(Application.Match(D, jFeries, 0))
'w = Weekday(D, vbMonday) < 6
'IsWork = f And w
For n = 1 To 11
If D = jFeries(n) Then feries = True
Next
If Not feries And Weekday(D, vbMonday) < 6 Then IsWork = True
End Function