Lister tous les jours et semaine d'une année

Bonsoir,

J'ai en paramètre d'entrée le numéro de l'année.
Je voudrais faire une sorte de calendrier donc je dois lister tous les jours de l'année en extrayant le nom du jour et le numéro de la semaine.
J'ai trouvé la formule pour connaitre le nombre de jour dans l'année et je pensais utiliser une boucle partant du premier jour jusqu'au dernier jour de cette année.

Merci

bonjour,

bonjour,

avec un excel2007, on n' a pas encore "sequence", alors ...

Sub Année()
     Dim An, Jan1, iJours
     An = 2023
     Jan1 = DateSerial(An, 1, 1)             'valeur du 1ier janvier
     iJours = WorksheetFunction.EDate(Jan1, 12) - Jan1     'nombre de jours dans cette année
     Set c = Cells(Jan1, 1).Resize(iJours)
     ajours = Evaluate("transpose(row(" & c.Address & "))")

     With Range("D10").Resize(, UBound(ajours)) 'à partir de D10
          .Value = ajours                    'coller horizontallement
          .NumberFormat = "ddd dd/mm/yy"
          .Offset(1).FormulaR1C1 = "=ISOWEEKNUM(R[-1]C)" 'iso semaine
     End With

     With Range("F15").Resize(UBound(ajours)) 'à partir de F15
          .Value = Application.Transpose(ajours)     'coller verticallement
          .NumberFormat = "ddd dd/mm/yy"
          .Offset(, 1).FormulaR1C1 = "=ISOWEEKNUM(RC[-1])"
     End With
End Sub

Bonjour,
Une autre proposition, une mise en concurrence !...
Alt F8 puis exécuter CreateCalendar.
Cdlt.

18david-vincent.xlsm (17.77 Ko)
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
Rechercher des sujets similaires à "lister tous jours semaine annee"