Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [Mois,Année]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Dim deb As Variant, fin&, dat&, fer As Range, lig&
Rows("5:" & Rows.Count).Delete 'RAZ
deb = [Mois] & "/" & [Année]
If Not IsDate(deb) Then Exit Sub
deb = CLng(CDate(deb))
fin = deb + 364
If Day(fin + 1) > 1 Then fin = fin + 1 'année bissextile
Set fer = [ferie]
lig = 5
For dat = deb To fin '1 an
If lig > 5 And Day(dat) = 1 Then
Rows("2:4").Copy Rows(lig + 1)
Cells(lig + 1, 4) = UCase(Format(dat, "mmmm yyyy"))
lig = lig + 4
End If
If Weekday(dat, 2) < 6 And Application.CountIf(fer, dat) = 0 Then
Cells(lig, 1) = Application.IsoWeekNum(dat)
Cells(lig, 2) = dat
Cells(lig, 3) = dat
Cells(lig, 1).Resize(, 11).Borders.Weight = xlThin 'bordures
lig = lig + 1
End If
Next
End Sub