Public D1 As Date, D2 As Date, an As Integer
Sub CalculJoursOuvres()
D1 = DateSerial(2011, 12, 22)
D2 = DateSerial(2011, 12, 26)
Toto = NBJoursOuvres(D1, D2)
MsgBox Toto
End Sub
Function NBJoursOuvres(D1, D2)
Dim I As Long
an = Year(Date)
For I = D1 To D2
NBJoursOuvres = NBJoursOuvres + (Weekday(CDate(I)) <> 1 And _
Weekday(CDate(I)) <> 7) And CDate(I) <> Fer(an) * True
Next
End Function
Function Paq(ByVal an As Integer) As Date
Paq = DateSerial(an, 3, 23) + ((2 * (an Mod 4) + (4 * (an Mod 7) + _
(6 * (((19 * (an Mod 19)) + 24) Mod 30) + 5))) Mod 7) + _
((19 * (an Mod 19) + 24) Mod 30) - 1
End Function
Function Fer(an%) 'liste de tous les jours fériés
Dim pq
pq = Paq(an)
Fer = Array(CLng(DateSerial(an, 1, 1)), CLng(DateSerial(an, 5, 1)), CLng(DateSerial(an, 5, 8)), CLng(DateSerial(an, 7, 14)), CLng(DateSerial(an, 8, 15)), CLng(DateSerial(an, 11, 1)), CLng(DateSerial(an, 11, 11)), CLng(DateSerial(an, 12, 25)), CLng(pq) + 1, CLng(pq) + 39, CLng(pq) + 50)
End Function