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

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Répondre
clothilded
Fraîchement OOthentifié
Messages : 7
Inscription : 28 juin 2018 21:19

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

Message 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
Dernière modification par micmac le 04 juil. 2018 20:33, modifié 1 fois.
Raison : Balisage
OpenOffice4.0.1 sous Windows 8
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

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

Message 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.
clothilded
Fraîchement OOthentifié
Messages : 7
Inscription : 28 juin 2018 21:19

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

Message 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
Pièces jointes
resultat de diagramme souhaité
resultat de diagramme souhaité
OpenOffice4.0.1 sous Windows 8
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 01:17
Localisation : gâtine deux-sèvrienne

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

Message 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
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
clothilded
Fraîchement OOthentifié
Messages : 7
Inscription : 28 juin 2018 21:19

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

Message 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
Pièces jointes
Diagramme-ligne-colonnes-empilees.ods
fichier diagramme ligne colonnes empilées
(29.39 Kio) Téléchargé 113 fois
OpenOffice4.0.1 sous Windows 8
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 623
Inscription : 10 août 2017 00:15

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

Message 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
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 01:17
Localisation : gâtine deux-sèvrienne

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

Message 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
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

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

Message 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+
Pièces jointes
Diagramme-ligne-colonnes-empilees.ods
(22.67 Kio) Téléchargé 97 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 01:17
Localisation : gâtine deux-sèvrienne

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

Message par luky-luke »

:bravo:
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

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

Message 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+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
clothilded
Fraîchement OOthentifié
Messages : 7
Inscription : 28 juin 2018 21:19

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

Message 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
OpenOffice4.0.1 sous Windows 8
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9224
Inscription : 28 août 2010 10:45

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

Message 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
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Répondre