Bonjour,
Perso, je pense que fusionner des cellules n'est pas la bonne solution. Si votre fichier peut admettre les macros, le code ci-dessous vous donne le résultat de cette capture d'écran :
Vous ne devriez pas travailler en norme iso pour vos semaines ?
Option Explicit
Sub TestCalendrierMoisEtSemaines()
CalendrierMoisEtSemaines Sheets("Feuil1")
End Sub
Sub CalendrierMoisEtSemaines(ByVal Sh As Worksheet)
Dim I As Integer, DerniereColonne As Integer, SemaineEnCours As Integer, MoisEnCours As Integer
Dim DateEncours As Date
With Sh
DerniereColonne = .Cells(4, .Columns.Count).End(xlToLeft).Column
Range(.Cells(1, 5), .Cells(2, DerniereColonne)).ClearContents
DateEncours = CDate(.Cells(4, 5))
SemaineEnCours = WorksheetFunction.IsoWeekNum(DateEncours)
MoisEnCours = Month(DateEncours)
.Cells(2, 5) = SemaineEnCours
.Cells(1, 5) = UCase(Format(DateEncours, "mmmm"))
For I = 5 To DerniereColonne
DateEncours = CDate(.Cells(4, I))
If WorksheetFunction.IsoWeekNum(DateEncours) <> SemaineEnCours Then
SemaineEnCours = WorksheetFunction.IsoWeekNum(DateEncours)
.Cells(2, I) = SemaineEnCours
End If
If Month(DateEncours) <> MoisEnCours Then
MoisEnCours = Month(DateEncours)
.Cells(1, I) = UCase(Format(DateEncours, "mmmm"))
End If
Next I
End With
End Sub