Private Sub Worksheet_Change(ByVal Target As Range)
With [A7]
If Intersect(Target, .Offset(1)) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
.Offset(1).Select
If Not IsDate(.Offset(1)) Then .EntireRow.Resize(2).ClearContents: GoTo 1
.Offset(1) = DateSerial(Year(.Offset(1)), Month(.Offset(1)), 1) '1er jour du mois
.Offset(1, 1).Resize(, 30) = "=IFERROR(IF(MONTH(RC[-1]+1)=MONTH(RC[-1]),RC[-1]+1,""""),"""")"
.Resize(, 31) = "=IFERROR(IF(WEEKDAY(R[1]C)=1,""#N/A"",TEXT(R[1]C,""jjjj"")),"""")" 'jjjj pour version française
.Resize(2, 31) = .Resize(2, 31).Value 'supprime les formules
.Resize(, 31).SpecialCells(xlCellTypeConstants, 16).Offset(1) = ""
.Resize(, 31).Replace "#N/A", "Commentaire"
.Resize(2, 31).Columns.AutoFit 'ajuste les largeurs
1 Application.EnableEvents = True 'réactive les évènements
End With
With UsedRange: End With 'actualise la barre de défilement horizontale
End Sub