Axe horizontal formatté en date sans dépendre d'une plage de donnée
Bonjour,
Je souhaite tracer des graphiques xlXYScatterLines avec l'axe horizontal formatté en date, voire en mois. Cette option ne me semble pas disponible dans Excel. Mon idée constiste donc à supperposer un (ou plusieurs) graphique xlXYScatterLines usuel avec un graphique xlLine formatté en date ne contenant aucune courbe (du moins visible). Ça fonctionne très bien, si ce n'est que je souhaiterais améliorer le codage, sans nécessité de passer par une plage de donnée...
Une autre idée serait de reconcstruire un axe articifiel en traçant chaque trait et valeur de l'axe les uns après les autres (mais j'ai un peu la flegme :mouarf: )
Ci-dessous un exemple minimal :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
Option Explicit
'
Sub test()
Dim ws As Worksheet: Set ws = ActiveSheet
With ws
.Range("A1") = #1/1/2000#
.Range("A2") = #12/31/2020#
' .Range("B1") = 0
' .Range("B2") = 0
Dim sh As Shape: For Each sh In .Shapes
sh.Delete
Next sh
With .Shapes.AddChart
With .Chart
.ChartType = xlLine
With .Axes(xlCategory)
'.BaseUnit = xlMonths
.BaseUnit = xlYears
.TickLabels.NumberFormat = "yyyy"
End With
With .Axes(xlValue)
.MajorGridlines.Format.Line.Visible = msoFalse
.TickLabelPosition = xlNone
.MajorTickMark = xlNone
End With
'est-il possible de définir les données à partir d'un tableau et non d'une plage de donnée, afin de ne pas "polluer" le classeur inutilement ?
.SetSourceData Source:=ws.Range("A1:B2")
.FullSeriesCollection(.FullSeriesCollection.Count).Format.Line.Visible = msoFalse
.Legend.Delete
End With
End With
End With
End Sub |
Ps : un axe usuel ne peut pas convernir, car la largeur entre les graduation varie suivant le nombre de jours dans l'année et dans le mois (je ne souhaite pas faire d'approximation).
Merci par avance !