Bonjour,
Une autre proposition, une mise en concurrence !...
Alt F8 puis exécuter CreateCalendar.
Cdlt.
Option Explicit
Public Sub CreateCalendar()
Dim iYear As Integer, iWeek As Integer, iDays As Integer, arr() As Variant, lStart As Long, i As Long, k As Long
Feuil1.Cells(1).CurrentRegion.Offset(1).Clear
iYear = 2023
lStart = DateSerial(iYear, 1, 1)
iWeek = WorksheetFunction.IsoWeekNum(DateSerial(iYear, 12, 28))
iDays = IIf(iWeek = 52, 365, 366)
ReDim arr(1 To iDays, 1 To 3)
For i = 1 To iDays
arr(i, 1) = CDate(lStart + k)
arr(i, 2) = Format(lStart + k, "ddd")
arr(i, 3) = WorksheetFunction.IsoWeekNum(lStart + k)
k = k + 1
Next i
Feuil1.Cells(2, 1).Resize(iDays, 3).Value = arr
End Sub