FAQ LibreOffice et Apache OpenOfficeConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 359, dernière mise à jour : 15 juillet 2017  Ajouter une question

 

Bienvenue sur la FAQ, elle a été réalisée pour répondre aux questions concernant les suites bureautiques Apache OpenOffice (AOO) et LibreOffice (LibO).

Si vous souhaitez participer pour l'améliorer, pour proposer vos contributions ou si vous constatez des erreurs dans cette page, n'hésitez-pas !!! Participez.


SommaireProgrammation OBasicOBasic : TableurLes graphiques (5)
précédent sommaire suivant
 

Il existe plusieurs types de graphiques :

  • LineDiagram (Linéaires) ;
  • PieDiagram (Secteurs) ;
  • AreaDiagram (Surfaces) ;
  • BarDiagram (Barres) ;
  • XYDiagram (Nuages de points) ;


Description de la méthode addNewByName:
.addNewByName(aName ,aRect ,aRanges ,bColumnHeaders , bRowHeaders)
aName permet de nommer le graphique.
aRect Spécifie la position et les dimensions du graphique.
aRanges Spécifie la plage source du graphique.
bColumnHeaders: La 1ere ligne de la source est utilisée pour définir les étiquettes si la valeur True est attribuée.
bRowHeaders: La 1ere colonne de la source est utilisée pour définir les étiquettes si la valeur True est attribuée.

Consultez l'API Guide pour plus d'informations.

Cet exemple montre comment créer un graphique type XYDiagram dans la 2eme feuille du classeur. La source de données est dans la 1ere feuille.
Code vb : Sélectionner tout
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
Sub CreationGraphique 
Dim oDoc As Object  
Dim Rect As New com.sun.star.awt.Rectangle  
Dim Source(0) As New com.sun.star.table.CellRangeAddress  
Dim oCharts As Object , oChart As Object 
  
oDoc = ThisComponent 
  
'Le graphique sera positionné dans la 2eme feuille du classeur  
oCharts = oDoc.Sheets(1).Charts  
  
'--- Spécfie la position et les dimensions du graphique --- 
  Rect.X = 1000 'horizontal 
  Rect.Y = 500 'vertical 
  Rect.Width = 24000 'Largeur 
  Rect.Height = 13000 'Hauteur 
'---------------------------------------------------------- 
  
'--- Spécifie la source du graphique --- 
'Les données sont dans la plage A1:D30 
'La première colonne correspond à l'axe des abscisses (une série de dates par exemple) 
'Les autres colonnes contiennent les valeurs d'ordonnées 
'La première ligne contient les étiquettes des séries 
  Source(0).Sheet = 0 '1ere feuille du graphique 
  Source(0).StartColumn = 0 'Ligne 1 
  Source(0).StartRow = 0  'Colonne A 
  Source(0).EndColumn = 3 'Colonne D 
  Source(0).EndRow = 29 'Ligne 30
Code vb : Sélectionner tout
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
'Création du graphique 
oCharts.addNewByName("MonGraphique",Rect ,Source(),True , True)  
  
'Place le graphique dans la feuille de calcul 
oChart = oCharts.getByName("MonGraphique").EmbeddedObject  
  
With oChart 
  'Type de graphique (Scatters) 
  .Diagram = oChart.createInstance("com.sun.star.chart.XYDiagram") 
  
  'Lissage des lignes (0: pas de lissage, 1: spline cubique, 2: spline B) 
  oChart.Diagram.SplineType = 0 
  'Change le symbole des points 
  oChart.Diagram.SymbolType = com.sun.star.chart.ChartSymbolType.SYMBOL1  
  
  'Modifie la couleur de fond du graphique 
  .Diagram.wall.FillColor =RGB(150,150,150) 
  
  'Spécifie la valeur maxi de l'étiquette des ordonnées 
  .Diagram.YAxis.Max = 6000 
  
  'Attribue un titre à l'axe des abscisses 
  .Diagram.HasXAxisTitle = True  
  .Diagram.YAxisTitle.string = "Les valeurs"  
  
  'Attribue un titre à l'axe des ordonnées   
  .Diagram.HasYAxisTitle = True  
  .Diagram.XAxisTitle.string = "Dates"  
  
  'La première ligne contient les étiquettes des séries  
  .DataSourceLabelsInFirstColumn = False 
  .DataSourceLabelsInFirstRow = True 
  
  'Roration des étiquettes pour l'axe des abscisses 
  .Diagram.XAxis.TextRotation = 9000 '90 degrés 
  
  'redéfinit la taille des étiquettes pour les abscisses et les ordonnées 
  .Diagram.YAxis.CharHeight = 4 
  .Diagram.XAxis.CharHeight = 4 
  
  'Attribue un titre au graphique puis un couleur à la chaîne de caractères 
  .Title.String = "Le titre du graphique" 
  .Title.CharColor = RGB(200,0,0) 
End With 
  
oDoc.Sheets(0).getCellByPosition(0,0).String = "MonGraphique"  
  
End Sub

Mis à jour le 27 août 2013 SilkyRoad

Voici un exemple qui permet de boucler sur tous les graphiques de la 2eme feuille.
La procédure renvoie le nom de chaque graphique ainsi que la plage source.

Code vb : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub BoucleGraphiquesFeuille 
Dim oDoc As Object  
Dim oChart As Object 
Dim i As Integer 
  
oDoc = ThisComponent 
  
'Boucle sur les graphiques de la 2eme feuille 
For i = 0 To oDoc.Sheets(1).Charts.Count - 1 
  ochart = oDoc.Sheets(1).charts(i).EmbeddedObject 
  
  'La procédure récupère : 
    '*le nom de chaque graphique 
    '*la plage de données source 
  MsgBox oDoc.Sheets(1).charts(i).Name & Chr(13) & _ 
  	ochart.ChartRangeAddress 
Next i 
End Sub

Mis à jour le 2 août 2013 SilkyRoad

La procédure suivante permet de changer la source de données, le titre du graphique et quelques mises en forme.

Code vb : Sélectionner tout
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
Sub ModifierGraphique 
Dim oDoc As Object  
Dim oChart As Object 
  
oDoc = ThisComponent 
  
'Définit l'objet graphique (le 1er graphique de la 2eme feuille) 
oChart = oDoc.Sheets(1).Charts(0).EmbeddedObject 
  
  '---- 
  'Remarque : 
  'Si vous connaissez le nom du graphique, vous pouvez utiliser cette syntaxe : 
  'oChart = oDoc.Sheets(1).Charts.getByName("MonGraphique").EmbeddedObject  
  '---- 
  
'Spécifie la nouvelle plage de données source   
oChart.ChartRangeAddress = "Feuille1.$A$1:.$B25" 
  
'Modifie le titre du graphique 
oChart.Title.String = "Le nouveau titre" 
  
'Modifie la couleur de fond du graphique 
oChart.Diagram.wall.FillColor = RGB(250,200,200) 
  
'Modifie l'épaisseur de la courbe 
oChart.Diagram.Linewidth = 100 
  
'Modifier l'étiquette de l'axe des abscisses 
oChart.Diagram.XAxisTitle.String = "azerty" 
  
  '***************************** 
  'Important : 
  '---------- 
  'Il est parfois nécessaire de lancer le recalcule automatique (touche F9) 
  'pour visualiser le résultat. 
  '***************************** 
  
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Cet exemple permet de redéfinir la plage source du graphique en ajoutant cinq lignes et deux colonnes par rapport à la plage de cellules initiale.
Une plage $A$1:$B$25 deviendra $A$1:$D$30 :

Code vb : Sélectionner tout
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
Sub Ajouter_Series_Et_Points 
Dim oDoc As Object  
Dim oChart As Object  
Dim Plage 
  
oDoc = ThisComponent 
  
'Définit l'objet graphique (Le 1er graphique de la 2eme feuille) 
oChart = oDoc.Sheets(1).Charts(0) 
  
'Récupère la plage actuelle 
Plage = oChart.getRanges() 
  
'Ajoute cinq lignes par rapport à la source initiale 
Plage(0).EndRow = Plage(0).EndRow + 5 
oChart.setRanges(Plage) 
  
'Ajoute deux colonnes par rapport à la source initiale 
Plage(0).EndColumn = Plage(0).EndColumn + 2 
oChart.setRanges(Plage) 
  
'-------------- 
'Par exemple, une plage initiale $A$1:$B$25 deviendra $A$1:$D$30 
'-------------- 
  
End Sub

Mis à jour le 26 août 2013 SilkyRoad

Code vb : Sélectionner tout
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
Sub ExporterGraphique_FormatImage 
  Dim Fichier As String 
  Dim TabFiltre(3) As New com.sun.star.beans.PropertyValue 
  Dim Tableau (2) As New com.sun.star.beans.PropertyValue 
  Dim CheminURL As New com.sun.star.util.URL 
  Dim Obj As Object 
  Dim oGEF As Variant 
  
  Fichier = ConvertToURL( "C:\ExportGraphique.jpg" ) 
  
  'Spécifie le 1er objet (en l'occurrence un graphique incorporé) contenu dans la 1er onglet 
  Obj = ThisComponent.DrawPages.getByIndex( 0 ).getByIndex( 0 ) 
  
  TabFiltre(0).Name  = "PixelWidth"  'Largeur en pixels 
  TabFiltre(0).Value = 900 
  TabFiltre(1).Name  = "PixelHeight" 'Hauteur en pixels 
  TabFiltre(1).Value = 700 
  TabFiltre(2).Name  ="Quality"  'de 1 à 100% 
  TabFiltre(2).Value = 80  
  TabFiltre(3).Name  ="ColorMode" '0=Couleur  , 1=Niveaux de Gris 
  TabFiltre(3).Value = 0  
  
  oGEF = createUnoService( "com.sun.star.drawing.GraphicExportFilter" ) 
  oGEF.SetSourceDocument( Obj ) 
  
  CheminURL.complete = Fichier 
  
  Tableau(0).Name  = "MediaType" 
  Tableau(0).Value = "image/jpeg" 
  Tableau(1).Name  = "URL" 
  Tableau(1).Value = CheminURL 
  Tableau(2).Name  = "FilterData" 
  Tableau(2).Value = TabFiltre 
  
  oGEF.Filter( Tableau() )         
End Sub

Mis à jour le 2 août 2013 SilkyRoad

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique OpenOffice & LibreOffice : zoom61 -