Bonjour le forum,
Salut Didier, LouReed ,
Premier jet
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim dDate As Date, dNDate As Date, dEaster As Date, iRow%, iIdx%, iEaster%
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("B3")) Is Nothing Then
If IsDate(Target) = True Then
iRow = 3
Range("B4:B35").ClearContents
dDate = CDate(Range("B3").Value)
'Calcul de la date de Pâques
iEaster = (((19 * (Year(dDate) Mod 19)) + 24) Mod 30) + _
((2 * (Year(dDate) Mod 4)) + (4 * (Year(dDate) Mod 7)) + ((6 * (((19 * (Year(dDate) Mod 19)) + 24) Mod 30)) + 5) Mod 7)
dEaster = IIf(iEaster <= 9, DateSerial(Year(dDate), 3, iEaster + 22), DateSerial(Year(dDate), 4, iEaster - 9))
For x = 1 To DateDiff("d", dDate, DateAdd("m", 2, DateSerial(Year(dDate), Month(dDate), 1) - 1))
iIdx = iIdx + 1
dNDate = DateAdd("d", iIdx, dDate)
If Weekday(dNDate, vbMonday) = 4 Or Weekday(dNDate, vbMonday) > 5 Or _
dNDate = DateSerial(Year(dNDate), 1, 1) Or dNDate = DateSerial(Year(dNDate), 5, 1) Or dNDate = DateSerial(Year(dNDate), 5, 8) Or _
dNDate = DateAdd("d", 1, dEaster) Or dNDate = DateAdd("d", 39, dEaster) Or dNDate = DateAdd("d", 50, dEaster) Or _
dNDate = DateSerial(Year(dNDate), 7, 14) Or dNDate = DateSerial(Year(dNDate), 8, 15) Or _
dNDate = DateSerial(Year(dNDate), 11, 1) Or dNDate = DateSerial(Year(dNDate), 11, 11) Or dNDate = DateSerial(Year(dNDate), 12, 25) Then _
iRow = iRow + 1: _
Cells(iRow, 2) = dNDate
Next
End If
End If
'
Application.EnableEvents = True
'
End Sub
A+