1 message in org.openoffice.fr.progsnippet sur les histogrammes
FromSent OnAttachments
BOTTIN Laurence - DGMT/SG/AG2Feb 26, 2007 5:23 am.snip
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:snippet sur les histogrammesActions...
From:BOTTIN Laurence - DGMT/SG/AG2 (laur@equipement.gouv.fr)
Date:Feb 26, 2007 5:23:11 am
List:org.openoffice.fr.prog
Attachments:
Calc.CreationModificationEtSuppressionDe...gramme.snip - 12k

Bonjour, j'ai terminé une première version d'un classeur Calc permettant de créer , modifier, supprimer un histogramme, un diagramme à secteur, un pilote de données et des sous-totaux. Je transmets un snippet concernant uniquement les histogrammmes. Je viens juste de transmettre le snippet à de@api.openoffice.org mais comme c'est en français je ne pense pas que ça les intéresse. Est-il possible de déposer quelque part le classeur pour connaître votre avis, ce qui peut être améliorer et savoir si il est utile de le diffuser.

Laurence

<?xml version="1.0"?> <!-- $RCSfile: $ last change: $Revision: $ $Author: $ $Date: $

(c)2003 by the copyright holders listed with the author-tags. If no explicit copyright holder is mentioned with a certain author, the author him-/herself is the copyright holder. All rights reserved.

Public Documentation License Notice:

The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html

The Original Documentation can be found in the CVS archives of openoffice.org at the place specified by RCSfile: in this header.

The Initial Writer(s) of the Original Documentation are listed with the author-tags below.

The Contributor(s) are listed with the author-tags below without the marker for being an initial author.

All Rights Reserved. -->

<snippet language="OOBasic" application="Calc">

<keywords> <keyword>BarDiagram</keyword> <keyword>addNewByName</keyword> <keyword>Diagram</keyword> <keyword>getDataPointProperties</keyword> <keyword>Chart</keyword> <keyword>Rectangle</keyword> <keyword>LockControllers</keyword> </keywords>

<authors> </authors>

<question heading="cr&#233;ation modification et suppression de diagramme &#224;
histogramme">comment cr&#233;er, modifier et supprimer un histogramme </question>

<answer> <p>avec l&apos;aide de la Documentation Sun Chapitre 9 : Diagrammes,</p> <p>de la liste pr@fr.openoffice.org et du site
http://ooo.developpez.com/faq/?page=Graphique</p> <p>&apos;Il existe plusieurs types de graphiques:</p> <p>&apos; * LineDiagram (Lin&#233;aires)</p> <p>&apos; * PieDiagram (Secteurs)</p> <p>&apos; * AreaDiagram (Surfaces)</p> <p>&apos; * BarDiagram (Barres)</p> <p>&apos; * XYDiagram (Nuages de points)</p> <p></p> <p>&apos;Description de la m&#233;thode addNewByName:</p> <p>&apos; .addNewByName(aName ,aRect ,aRanges ,bColumnHeaders ,
bRowHeaders)</p> <p>&apos; aName permet de nommer le graphique.</p> <p>&apos; aRect Sp&#233;cifie la position et les dimensions du
graphique.</p> <p>&apos; aRanges Sp&#233;cifie la plage source du graphique.</p> <p>&apos; bColumnHeaders: La 1ere ligne de la source est utilis&#233;e pour
d&#233;finir les &#233;tiquettes si la valeur True est attribu&#233;e.</p> <p>&apos; bRowHeaders: La 1ere colonne de la source est utilis&#233;e pour
d&#233;finir les &#233;tiquettes si la valeur True est attribu&#233;e.</p> <p></p> <p>&apos;il est important de noter que les coordonn&#233;es d&apos;une cellule
dans calc </p> <p>&apos;sont de la forme (colonne, ligne) et que la num&#233;rotation commence
&#224; 0</p> <p></p> <listing>&apos;===================================================================================== &apos;S_CreerDiagrammeHisto()

&apos;objectif : &apos; Cr&#233;er un histogrammes &apos; &apos;===================================================================================== Sub S_CreerDiagrammeHisto()

Dim erreur_num Dim erreur_txt Dim erreur_ligne

Dim oCalc As object Dim oFeuilles as Object Dim oFeuilleTab As Object &apos;feuille qui va contenir le graphique Dim oFeuilleData As Object &apos;feuille qui contient les donn&#233;es

Dim oRanges As new {@see com.sun.star.table.CellRangeAddress} Dim numFeuille As Integer &apos;indice de la feuille dans le classeur

dim source(0) As new {@see com.sun.star.table.CellRangeAddress} &apos;une plage
de donn&#233;es Dim LigneDeb As Long Dim ColonneDeb As Long Dim Feuille As Long Dim ColonneFin As Long Dim LigneFin As Long Dim i As Long Dim j As Long

Dim oCharts As Object &apos;la collection de diagramme dans oFeuille Dim oChart AS Object &apos;le diagramme sur lequel on travail Dim Rect As New {@see com.sun.star.awt.Rectangle}

Dim leNom As String Dim oDiag As Object Dim oDataPOint As Object &apos;un point de donn&#233;es (une portion de
camembert)

On Error GoTo Erreurs

oFeuilTab = &quot;Diagramme_Histo&quot; oFeuilData = &quot;Donn&#233;es_histo&quot; oCalc = ThisComponent oFeuilles = oCalc.sheets oFeuilleTab = oFeuilles.getByName(oFeuilTab) oFeuilleData = oFeuilles.getByName(oFeuilData)

&apos;Le graphique sera positionn&#233; dans la feuille Diagramme_Histo oCharts = oFeuilleTab.Charts

&apos;--- Sp&#233;cfie la position et les dimensions du graphique --- Rect.X = 1000 &apos;horizontal Rect.Y = 1500 &apos;vertical Rect.Width = 24000 &apos;Largeur Rect.Height = 13000 &apos;Hauteur &apos;----------------------------------------------------------

&apos;--- Sp&#233;cifie la source du graphique --- &apos;Les donn&#233;es sont dans la plage A2:D6 &apos;La premi&#232;re colonne correspond &#224; l&apos;axe des abscisses &apos;Les autres colonnes contiennent les valeurs d&apos;ordonn&#233;es &apos;La premi&#232;re ligne contient les &#233;tiquettes des s&#233;ries &apos;on r&#233;cup&#232;re l&apos;indice de la feuille numFeuille = oFeuilleData.RangeAddress.sheet Source(0).Sheet = numFeuille &apos;la position de la feuille peut chang&#233;e Source(0).StartColumn = 0 &apos;Colonne A Source(0).StartRow = 1 &apos; Ligne 2 Source(0).EndColumn = 3 &apos;Colonne D &apos;le nombre de ligne NbLignes = F_LongueurTable(oFeuilData, 1, 1) Source(0).EndRow = 1 + NbLignes - 1 &apos;le nombre de ligne peut varier &apos;---------------------------------------

&apos;Cr&#233;ation du graphique leNom = &quot;MonGraphique&quot; oCharts.addNewByName(leNom , Rect , Source() ,True , True)

&apos;Place le graphique dans la feuille de calcul oChart = oCharts.getByName(&quot;MonGraphique&quot;).EmbeddedObject &apos;bloque l&apos;affichage des mise &#224; jour, la mise &#224; jour est
beaucoup plus rapide oChart.LockControllers() With oChart &apos;Type de graphique (histogramme) .Diagram = oChart.createInstance(&quot;{@see
com.sun.star.chart.BarDiagram}&quot;)

&apos;Modifie la couleur de fond du graphique .Diagram.wall.FillColor =RGB(200,200,150)

&apos;Sp&#233;cifie la valeur maxi de l&apos;&#233;tiquette des ordonn&#233;es .Diagram.YAxis.Max = 300 &apos;Sp&#233;cifie la pas de l&apos;&#233;tiquette des ordonn&#233;es .Diagram.YAxis.StepMain = 50

&apos;Attribue un titre &#224; l&apos;axe des abscisses .Diagram.HasXAxisTitle = True .Diagram.YAxisTitle.string = &quot;Chiffre d&apos;affaire&quot;

&apos;Attribue un titre &#224; l&apos;axe des ordonn&#233;es .Diagram.HasYAxisTitle = True .Diagram.XAxisTitle.string = &quot;Commerciaux&quot;

&apos;La premiere colonne contient les &#233;tiquettes des s&#233;ries .DataSourceLabelsInFirstColumn = True &apos;La premiere ligne contient les &#233;tiquettes des s&#233;ries .DataSourceLabelsInFirstRow = True

&apos;Rotation des &#233;tiquettes pour l&apos;axe des abscisses .Diagram.XAxis.TextRotation = 9000 &apos;90 degr&#233;s

&apos;red&#233;finit la taille des &#233;tiquettes pour les abscisses et les
ordonn&#233;es .Diagram.YAxis.CharHeight = 10 .Diagram.XAxis.CharHeight = 10

&apos;Attribue un titre au graphique puis un couleur &#224; la cha&#238;ne de
caract&#232;res .Title.String = &quot;CA par commercial&quot; .Title.CharColor = RGB(200,0,0) End With

&apos;afficher l&apos;&#233;tiquette de donn&#233;es oDiag = oFeuilleTab.drawpage.getByIndex(3).model.diagram oDiag.setPropertyValue(&quot;DataCaption&quot;,1) &apos;modifier les propri&#233;t&#233;s des &#233;tiquettes de donn&#233;es
(caract&#232;re de taille 8) for i = 0 to 2 &apos;(on a trois colonnes de donn&#233;es) for j = 0 to NbLignes - 2 &apos;la num&#233;rotation commence &#224; 0 et on a
compt&#233; l&apos;intitul&#233; oDataPoint = oDiag.getDataPointProperties(j, i) oDataPoint.setPropertyValue(&quot;CharHeight&quot;, 8,0) &apos;taille des
caract&#232;res dans l&apos;&#233;tiquette next j next i &apos;d&#233;bloque l&apos;affichage des mise &#224; jour oChart.unlockControllers() Exit Sub Erreurs: erreur_num=err() erreur_txt=error(erreur_num) erreur_ligne = Erl() MsgBox(&quot;erreur n&#176; &quot; + erreur_num + &quot; &#224; la ligne &quot;
+ erreur_ligne + chr(10) + erreur_txt, 1 + 16, &quot;S_CreerDiagrammeHisto()
&quot;) End Sub

&apos;===================================================================================== &apos;S_MajDiagrammeHisto()

&apos;objectif : &apos; Mettre &#224; jour le graphique &apos; &apos;=====================================================================================

Sub S_MajDiagrammeHisto()

Dim erreur_num Dim erreur_txt Dim erreur_ligne

Dim oCalc As object Dim oFeuilles as Object Dim oFeuille As Object

Dim oRanges As Object Dim oFeuilData As String Dim oFeuilTab As String Dim newRange As new {@see com.sun.star.table.CellRangeAddress} &apos;une plage
de donn&#233;es Dim actualRange As new {@see com.sun.star.table.CellRangeAddress} &apos;une
plage de donn&#233;es Dim LigneDeb As Long Dim ColonneDeb As Long Dim Feuille As Long Dim ColonneFin As Long Dim LigneFin As Long

Dim oCharts As Object &apos;la collection de diagramme dans oFeuille Dim oChart AS Object &apos;le diagramme sur lequel on travail Dim oDiag As Object Dim oDataPoint As Object &apos;un point de donn&#233;es (une portion de
camembert)

On Error GoTo Erreurs

oFeuilTab = &quot;Diagramme_Histo&quot; oFeuilData = &quot;Donn&#233;es_histo&quot;

oCalc = ThisComponent oFeuilles=oCalc.sheets oFeuille = oFeuilles.getByName(oFeuilTab)

&apos;il n&apos;y a qu&apos;un graphique sur la feuille de calcul oCharts = oFeuille.Charts oChart = oCharts.getByName(&quot;MonGraphique&quot;) &apos;xray oChart &apos;on r&#233;cup&#232;re la plage de donn&#233;es oRanges = oChart.Ranges &apos;on r&#233;cup&#232;re les propri&#233;t&#233;s de la plage de
donn&#233;es actualrange = oRanges(0) Feuille = actualRange.sheet ColonneDeb = actualRange.StartColumn ColonneFin = actualRange.EndColumn ligneDeb = actualRange.StartRow LigneFin = actualRange.EndRow &apos;on compte le nombre de lignes de la nouvelle plage de donn&#233;es &apos;sur laquelle on veut faire pointer le diagramme NbLignes = F_LongueurTable(oFeuilData, LigneDeb, ColonneDeb + 1) &apos;on d&#233;finit la zone de donn&#233;es utilis&#233;e pour actualiser le
diagramme : newRange.sheet = Feuille newRange.StartColumn = ColonneDeb newRange.EndColumn = ColonneFin newRange.startRow = ligneDeb newRange.EndRow = ligneDeb + NbLignes - 1 &apos;on applique les propri&#233;t&#233;s de la nouvelle plage &#224; la plage
de donn&#233;es du graphique oRanges(0) = newRange ochart.setRanges(oRanges)

Exit Sub Erreurs: erreur_num=err() erreur_txt=error(erreur_num) erreur_ligne = Erl() MsgBox(&quot;erreur n&#176; &quot; + erreur_num + &quot; &#224; la ligne &quot;
+ erreur_ligne + chr(10) + erreur_txt, 1 + 16,
&quot;S_MajDiagrammeHisto()&quot;) End Sub

&apos;===================================================================================== &apos;S_SupDiagrammeHisto()

&apos;objectif : &apos; Supprimer tous les graphiques de la page &apos; &apos;=====================================================================================

Sub S_SupDiagrammeHisto()

Dim erreur_num Dim erreur_txt Dim erreur_ligne

Dim oCalc As object Dim oFeuilles as Object Dim oFeuille As Object Dim oFeuilTab As String

Dim oCharts As Object &apos;la collection de diagramme dans oFeuille Dim oChart AS Object &apos;le diagramme sur lequel on travail

Dim leNom As String

On Error GoTo Erreurs

oFeuilTab = &quot;Diagramme_Histo&quot;

oCalc = ThisComponent oFeuilles=oCalc.sheets oFeuille = oFeuilles.getByName( oFeuilTab) oCharts = oFeuille.Charts &apos;xray oPilotDonnees &apos;supprimer le graphique cr&#233;&#233; par la macro &apos;oCharts.removebyname(&quot;MonGraphique&quot;) &apos;supprimer legraphique cr&#233;&#233; manuellement &apos;oCharts.removebyname(&quot;object1&quot;)

&apos;supprime tous les graphiques de la feuille For i = 0 To oCharts.Count - 1 oChart = oCharts(i) leNom=oChart.name oCharts.removebyname(leNom) Next i

Exit Sub Erreurs: erreur_num=err() erreur_txt=error(erreur_num) erreur_ligne = Erl() MsgBox(&quot;erreur n&#176; &quot; + erreur_num + &quot; &#224; la ligne &quot;
+ erreur_ligne + chr(10) + erreur_txt, 1 + 16,
&quot;S_SupDiagrammeHisto()&quot;) End Sub</listing> </answer>

<versions> </versions>

<operating-systems> <operating-system name="Win32"/> </operating-systems>

<changelog> <change author-id="" date="2007-02-26">Initial version</change> </changelog>

</snippet>