Sub essai()
d = #4/30/2008#
MsgBox SerieOuvresSamedi(d, 8, 2008)
End Sub
Function SerieOuvresSamedi(début, nb, an)
Dim i As Integer, d As Long, nfériés As Integer, témoin As Boolean
Dim fériés(1 To 11)
paques = 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
fériés(1) = DateSerial(an, 1, 1)
fériés(2) = DateSerial(an, 5, 1)
fériés(3) = DateSerial(an, 5, 8)
fériés(4) = DateSerial(an, 7, 14)
fériés(5) = DateSerial(an, 8, 15)
fériés(6) = DateSerial(an, 11, 1)
fériés(7) = DateSerial(an, 11, 11)
fériés(8) = DateSerial(an, 12, 25)
fériés(9) = paques + 1
fériés(10) = paques + 39
fériés(11) = paques + 50
SerieOuvresSamedi = début
k = 0
Do
k = k + 1
témoin = False
For i = 1 To 11
If début + k = fériés(i) Then témoin = True
Next i
If Weekday(début + k) <> 1 And Not témoin Then
SerieOuvresSamedi = début + k
n = n + 1
End If
Loop Until n >= nb
End Function