Page 1 sur 1

[Résolu][Calc] Diagramme combiné ligne et colonnes empilées

Publié : 01 juil. 2018 21:26
par clothilded
Bonjour à tous,
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
merci de votre aide

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 02 juil. 2018 07:49
par Bidouille
Pour être aidé efficacement par les bénévoles et surtout leur faire gagner du temps, veuillez fournir les éléments suivants :
  1. insérer dans le corps du message le code de la macro exposant le problème
  2. joindre un document explicatif intégrant cette macro avec les données de départ (feuille1) et le résultat à obtenir (feuille2)
  3. fournir un mode pas-à-pas permettant de reproduire ce qui a été fait ou ce que vous cherchez à faire pour arriver au problème
  4. ajouter des copies écran (situation avant / après) si cela permet de mieux comprendre
Merci de publier ces informations à la suite.

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 02 juil. 2018 15:08
par clothilded
Bonjour,

en fin de compte voici le type de diagramme que je souhaite obtenir (en piece jointe), je pense quil ne faut pas faire appel a bardiagram mais même apres avoir éplucher plusieurs sites impossible de trouver à quoi faire appel

merci de votre aide

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 02 juil. 2018 15:13
par luky-luke
Bonjour
Bidouille a écrit :2. joindre un document explicatif intégrant cette macro avec les données de départ (feuille1) et le résultat à obtenir (feuille2)
Cordialement
Luke

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 02 juil. 2018 16:05
par clothilded
voici un doc avec en feuille 1 les données, en feuille 2 le résultat actuel de la macro et en 3 le résultat souhaité
par rapport au code initial, j'ai fait quelques modifs car je ne vous ai pas mis toute la macro juste le morceau qui pose problème
merci

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 03 juil. 2018 05:34
par Jurassic Pork
hello,
bon j'ai une bonne nouvelle et une mauvaise nouvelle :mrgreen: .
La bonne : on peut facilement transformer ton diagramme comme tu le désires :
1 - Sélectionner le diagramme
2 - Click droit - Sélectionner type de diagramme
3 - Choisir Colonne et Ligne avec nombre de lignes à 1
LibreOffice-TypeDiagram.png
4 - Et voilà le diagramme ressemble à ce que tu veux :
LibreOffice-Bardiagram-2.png
La mauvaise nouvelle c'est que je n'arrive pas à faire l'équivalent par programmation :aie:
Avec le code :

Code : Tout sélectionner

Sub ModifierDiagramme
Dim MonDocument As Object
Dim oCharts,  myChart As Object
MonDocument = ThisComponent
oCharts = MonDocument.Sheets(1).Charts
myChart = oCharts.getByIndex(0)
myChart.EmbeddedObject.Diagram.NumberofLines = 1
End Sub
cela devrait le faire, mais pas de changement et pas de messages d'erreur (avec LibreOffice 5.4.4.2 sous windows 10).
Un truc louche : Dans la documentation LibreOffice la propriété NumberOfLines est annoncée Deprecated (Obsolète).

Ami calmant, J.P

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 03 juil. 2018 09:44
par luky-luke
Bonjour
Jurassic Pork a écrit :La mauvaise nouvelle c'est que je n'arrive pas à faire l'équivalent par programmation
+1
L'application de certaine méthode ne semble pas fonctionner ou(et) alors je suis aveugle et ne trouve pas celle qui va bien :fou:
Un lien vers le forum anglais sur la création de ligne mais je ne suis pas vraiment sûr que cela te sois utile :?: To create a custom dashed line

Cordialement
Luke

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 03 juil. 2018 12:10
par Piaf
Bonjour
Tu peux tester :

Code : Tout sélectionner

Option Explicit
Sub CreateChartColLine()
Dim maFeuille as Object, oCharts as object, oChart as Object, oAdresse as Object
Dim oChartDoc as Object, oDiagram as Object, oTitle as Object, oChartTypeManager as Object
Dim oChartTypeTemplate as Object
Dim oName as String
Dim oRect as New "com.sun.star.awt.Rectangle"
	oName = "Mon Diagramme"
	maFeuille = thisComponent.sheets(1)
	oAdresse = thisComponent.Sheets(0).getCellRangeByName("A1:D7").getRangeAddress()
	oCharts = maFeuille.getCharts()
	If Not oCharts.hasByName(oName) Then
		oRect.X= 1000
		oRect.Y= 1000
		oRect.width = 18000
		oRect.Height= 10000
		oCharts.addNewByName(oName, oRect, Array(oAdresse), True, True)
	End If
	oChart = oCharts.getByName(oName)
	oChart.setRanges(Array(oAdresse))
	oChartDoc = oChart.getEmbeddedObject()
	oChartDoc.haslegend = True
	oTitle = oChartDoc.getTitle()
	oTitle.String = "Mon titre"
	oDiagram = oChartDoc.createInstance( "com.sun.star.chart.BarDiagram" )
	With oDiagram
		.DataCaption = 1
		.IncludeHiddenCells = False
		.RightAngledAxes = True
		.Stacked = True
		.getSecondaryAxis(0).AxisType = 1
		.DataRowSource = com.sun.star.chart.ChartDataRowSource.COLUMNS
	End With
	oChartDoc.setDiagram(oDiagram)
	oDiagram = oChartDoc.getDiagram()
	oChartTypeManager = oChartDoc.getChartTypeManager()
	oDiagram = oChartDoc.getFirstDiagram()
	oChartTypeTemplate = oChartTypeManager.createInstance("com.sun.star.chart2.template.StackedColumnWithLine")
	oChartTypeTemplate.changeDiagram(oDiagram)
End Sub
A+

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 03 juil. 2018 17:02
par luky-luke
:bravo:
Luke

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 04 juil. 2018 00:05
par Piaf
Bonsoir
Pas grand mérite, adaptation de solutions trouvées dans la doc après pas mal de recherches quand même :lol:
Après, hors mis le plaisir de faire compliqué quand on peut faire simple, quel est l'intérêt de réaliser le diagramme par macro
Jurassic Pork a écrit :La bonne : on peut facilement transformer ton diagramme comme tu le désires :
Bien souvent, les solutions les plus simples sont les meilleurs.
A+

[Résolu][Calc] Diagramme combiné ligne et colonnes empilées

Publié : 04 juil. 2018 17:26
par clothilded
Bonjour,
Merci pour votre aide
Après, hors mis le plaisir de faire compliqué quand on peut faire simple, quel est l'intérêt de réaliser le diagramme par macro
Juste pour info la macro finale réalise les 200 diagrammes beaucoup plus rapidement que de faire les modifications à la main et d'adapte à la très grande variabilité du nombre de lignes.

Encore merci de votre aide

Re: [Calc] Diagramme combiné ligne et colonnes empilées

Publié : 04 juil. 2018 18:31
par micmac
Pour être visible, le balisage doit être inséré au début du titre du premier message du fil : Comment clore un sujet correctement lorsqu'il est résolu