Private Sub Worksheet_Change(ByVal Target As Range)
Dim an%, jour, pos As Byte, dat&, n As Byte, resu&(), nn As Byte
an = [C3]: jour = [D3]: pos = [E3]
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
[G3:G14].ClearContents 'RAZ
If Application.CountBlank([C3:E3]) = 0 Then
jour = Application.Match(jour, Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"), 0)
For dat = DateSerial(an, 1, 1) To DateSerial(an + 1, 1, 0)
If Month(dat) <> Month(dat - 1) Then n = 0
If Weekday(dat) = jour Then n = n + 1: If n = pos Then ReDim Preserve resu(nn): resu(nn) = dat: nn = nn + 1
Next
If nn Then [G3].Resize(nn) = Application.Transpose(resu) 'restitution
End If
Application.EnableEvents = True 'réactive les évènements
End Sub