Je galère un peu à finaliser une macro permettant de faire des diagrammes.
Voilà mon problème, j'ai une table de données avec :
colonne d : les étiquettes de l'axe x
colonne e : valeur 1
colonne f : valeur 2
colonne g = valeur 1+ 2
je souhaiterai réaliser un diagramme combiné avec des colonnes empilées valeur 1 et valeur 2 (partie histogramme) et ajouter une ligne (colonne g)
pour la partie histogramme j'utilise bardiagram mais je ne trouve pas comment ajouter la ligne. Voilà mon code :
Code : Tout sélectionner
Dim oCharts As Object , oChart As Object
Dim Rect As New com.sun.star.awt.Rectangle
Dim Source(0) As New com.sun.star.table.CellRangeAddress
'Le graphique sera positionné dans la 5eme feuille du classeur
oCharts = MonDocument.Sheets(5).Charts
' Spécfie la position et les dimensions du graphique ---
Rect.X = 30000 'horizontal
Rect.Y = 10000 'vertical
Rect.Width = 24000 'Largeur
Rect.Height = 13000 'Hauteur
'--- Spécifie la source du graphique ---
'Les données sont dans la plage D1:Fdeniereligne + 1
'La première colonne correspond à l'axe des abscisses
'Les autres colonnes contiennent les valeurs d'ordonnées
'La première ligne contient les étiquettes des séries
Source(0).Sheet = 5 '5eme feuille du graphique
Source(0).Startcolumn = 3 'Colonne D
Source(0).StartRow = 0 'Ligne 1
Source(0).Endcolumn = 5 'Colonne F
Source(0).EndRow = derniereligne + 1
'Création du graphique
oCharts.addNewByName("Graphique",Rect,Source(),True , True)
'Place le graphique dans la feuille de calcul
oChart= oCharts.getByName("Graphique").EmbeddedObject
oChart.Title.String = "Mon titre"
With oChart
'Type de graphique (Scatters)
.Diagram = oChart.createInstance("com.sun.star.chart.BarDiagram")
'Attribue un titre à l'axe des abscisses
.Diagram.HasXAxisTitle = True
.Diagram.YAxisTitle.string = "Titre axe"
'La première ligne contient les étiquettes des séries
.DataSourceLabelsInFirstCOLumn = True
.DataSourceLabelsInFirstRow = True
.Diagram.XAxis.TextRotation = 4000
.Diagram.XAxis.TextCanOverlap = True
.Diagram.Stacked = True
.Legend.Alignment = com.sun.star.chart.ChartLegendPosition.TOP
End With
'insertion des étiquettes de données
charttype = oChart.FirstDiagram.CoordinateSystems(0).ChartTypes(0)
series = charttype.DataSeries
for each serie in series
label = serie.Label
label.ShowNumber = True
label.ShowNumberInPercent = false
serie.Label = label
serie.LabelPlacement = com.sun.star.chart.DataLabelPlacement.TOP
serie.LabelSeparator = chr(10)
next serie