bonsoir le fil, bonsoir le forum,
Si une proposition VBA t'intéresse encore, le code :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim R As Range 'déclare la variable R (Recherche)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim D As Date 'déclare la variable D (Date)
If Target.Address <> "$A$5" Then Exit Sub 'si le changement a lieu ailleurs que dans A5, sort de la procédure
If Target.Value = "" Then Range("B5:M5").ClearContents: Exit Sub 'si l'année est effacée, efface la plage B5:M5, sort de la procédure
For COL = 2 To 13 'boucle sur les colonne 2 à 13 (B à M)
D = DateSerial(Target.Value, COL, 0) 'définit la date D (dernier jour du mois de la colonne)
deb: 'étiquette
Set R = Rows(2).Find(D, , xlValues, xlWhole) 'définit la recherche R (recherche la date D dans la ligne 2)
If R Is Nothing Then D = D - 1: GoTo deb 'si aucune occurrence n'est trouvée, diminue la date D d'un jour et retourne à l'étiquette "deb"
Cells(5, COL).Value = D 'renvoie la date D dans le cellue ligne colonne COL
Next COL 'prochaine colonne de la boucle
End Sub
Ton fichier modifié (qui devient .xlsm à cause de la macro):