Option Explicit
Sub Macro1()
Dim x As Byte, y As Byte 'déclare les variables x et y
Dim j As Byte 'déclare la variable j (Jour)
Dim datd As Date 'décalre la variable datd (DATe Début)
Dim datf As Date 'déclare la variable datf (DATe Fin)
Dim js As Date 'déclare la variable js (JourS)
Dim an As String 'déclare la variable an (ANnée)
Dim a As String 'céclare la variable a
a = InputBox('Quelle année? ') 'définit la variable a
For x = 1 To 7 'boucle sur 7 valeurs
datd = DateValue(x & '/1/' & a) 'définit la variable datd du premier de l'an de l'année renseignée
j = Weekday(datd) 'définit le variable j (jour de la semaine la date de début)
If j = 2 Then Exit For 'condition si le jour est un lundi (2) sort de la boucle
Next x 'prochaine valeur de la boucle (la date de début 'datd' est définie)
datf = DateValue('31/12/' & a) 'définit la variable datf
If Weekday(datf) <> 1 Then 'condition 1 : si le 31 décembre n'est pas un dimanche
For y = 1 To 7 'boucle sur 7 valeurs
If Weekday(datf + y) = 1 Then 'condition 2 : si la date + 1 jour est un dimanche, sort de la boucle
datf = datf + y 'redéfinit la variable datf
Exit For 'sort de la boucle
End If 'fin condition 2
Next y 'prochaine valeur de la boucle
End If 'fin de la condition 1
'boucle sur la valeur de la date du début à la valeur de la date de fin
For js = CLng(datd) To CLng(datf)
'place les date (à partir de de la cellule A1)
Cells(js - (CLng(datd) - 1), 1) = DateValue(js)
Next js 'prochaine date
End Sub