bonjour,
je ne comprends pas ce que vous faitez là, mais voici mon approche
- on modifie la date où l'axe X et Y se croisent au demi du mois
- on change le minimum de l'axe X au début du mois
- on cache le premier label de l'axe x derrier une forme (maintenant rouge et trop grand, mais plus tard invisible)
- si nécessaire, on peut ajouter un 2ième série pour créer un axe Y
Dans le fichier, changez la cellule D1 pour décaler les mois
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DemiMois
If Target.Address = "$D$1" Then
With Me
DemiMois = WorksheetFunction.EDate(DateSerial(2022, 1, 15), Target.Value) 'cette date est le début virtuel de l'axe X
.Range("E1").Value = DemiMois 'pour mettre à jour le série (cacher tout ce qu'on a avant cette date)
With .ChartObjects(2).Chart.Axes(xlCategory) 'l'axe X du graphique
.MinimumScale = DemiMois - 14 'on veut que les labels commencent le premier du "DemiMois"
.MaximumScale = DateSerial(2023, 3, 15) 'max est fixe pour le moment
.CrossesAt = DemiMois 'début virtuel de l'axe
.MajorUnit = 30.5 '=366/12, n'est pas exactement le début du mois (petit décalage)
End With
End With
End If
End Sub