IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

CALC - macro diagramme créer axe y secondaire à droite pour une 2e série [LibreOffice][Tableur]


Sujet :

OpenOffice & LibreOffice

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut CALC - macro diagramme créer axe y secondaire à droite pour une 2e série
    Bonjour,

    image du diagramme

    Nom : diagramme.jpg
Affichages : 242
Taille : 60,4 Ko

    Comme on peut le voir sur ce diagramme, la série de données n°1 a pour ordonnée l'axe y primaire à gauche avec les bonnes valeurs de 0 à 3000.
    Mais pour la série de données n°2, elle prend le même axe y à gauche au lieu de l'axe y secondaire à droite dont les valeurs vont de 0 à 150 ( ou 200 ).
    La série n°2 se retrouve donc écrasée puisque son ordonnée maximum ( environ 125 ) est faible par rapport à l'ordonnée maximum de la série n°1 à 2800.

    Manuellement, j'ai trouvé comment faire afin que la série n°2 se cale sur l'axe secondaire y à droite avec un maximum qui permet de voir un rendu moins écrasé
    de la série n°2.

    méthode manuelle


    clic droit sur le diagramme puis l'éditer
    clic gauche sur un point de la 2e série de données pour la sélectionner
    puis clic droit sur ce point, choisir "Formater les séries de données..."
    une fenêtre s'ouvre, choisir l'onglet "Options" en haut
    puis dans la partie en haut à gauche, "Aligner les séries de données à"
    choisir l'option 2 => Axe Y secondaire et non l'option 1 => Axe Y primaire
    puis faire ok
    et la 2e série est modifiée dans le sens que l'axe y secondaire tient compte du
    minimum et du maximum des ordonnées pour la 2e série.
    Je voudrais faire la même chose avec une macro, mais je ne sais pas quel objet prendre,
    objet ou propriété ou méthode ou objet enfant.
    J'aimerais que la 2e série pour les ordonnées se cale sur l'axe y secondaire à droite et
    non sur l'axe des ordonnées de gauche comme la 1ere série
    Par défaut l'axe y secondaire à droite n'apparait pas.

    Je pense que c'est l'objet "Diagram" mais je ne suis pas sûr ou modifier l'objet "SecondYAxis"

    J'ai essayé le code suivant pour la macro mais cela ne permet pas le résultat escompté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
     
     	' les dimensions du diagramme dans la zone graphique 	
     	Dim diagramme_dimension As New com.sun.star.awt.Size
     
     	' la position du diagramme dans la zone graphique
     	Dim diagramme_position As New com.sun.star.awt.Point
     
     	' nombre de zones graphiques dans la feuille
     	Dim diagrammes_nombre As Integer
     
     	' la position de la zone graphique et les dimensions de la zone graphique, avec le diagramme et les titres, sous-titres, légende, etc.	
     	Dim diagrammes_position_dimension As New com.sun.star.awt.Rectangle
     
     	' données pour la zone graphique
    	Dim diagrammes_donnees(3) As New com.sun.star.table.CellRangeAddress
     
    	Dim feuille As Object
    	Dim feuille_index As Integer
    	Dim feuille_nom As String
     
    	Dim feuille_active As Object
    	Dim feuille_active_index As Integer
    	Dim feuille_active_nom As String
     
    	Dim i As Integer 
     
    	Dim x_minimum As Integer
    	Dim x_maximum As Integer
    	Dim y_minimum As Integer
    	Dim y_maximum As Integer	
     
    	document = ThisComponent
     
     	feuille_1 = document.Sheets.getByName("Feuille1")
     	feuille_2 = document.Sheets.getByName("Feuille2")
     	feuille_3 = document.Sheets.getByName("Feuille3")
     	feuille_4 = document.Sheets.getByName("Feuille4")
     	feuille_5 = document.Sheets.getByName("Feuille5")
     	feuille_6 = document.Sheets.getByName("Feuille6")
      	feuille_7 = document.Sheets.getByName("Feuille7")
     	feuille_8 = document.Sheets.getByName("Feuille8")
     
    	' attention 100 = 1 mm - 1000 = 1 cm
     
    	diagrammes_position_dimension.X = 2000
    	diagrammes_position_dimension.Y = 2000
    	diagrammes_position_dimension.Width = 45000
    	diagrammes_position_dimension.Height = 36000
     
    	' série dette annuelle
     
    	' les données sont sur la feuille avec l'index 1 => feuille_2 = document.Sheets.getByName("Feuille2") 
     
    	' pour la donnée de la légende, en-tête de la colonne B à savoir "Dette totale - Milliard €"
    	diagrammes_donnees(0).Sheet = 1
    	diagrammes_donnees(0).StartColumn = 1
    	diagrammes_donnees(0).StartRow = 0
    	diagrammes_donnees(0).EndColumn = 1
    	diagrammes_donnees(0).EndRow = 0
     
    	' pour les données autres
    	' la numérotation des feuilles, des lignes et des colonnes commence à 0	
    	diagrammes_donnees(1).Sheet = 1						' la feuille ( "Feuille2" ) avec l'index 1
     
    	diagrammes_donnees(1).StartColumn = 0				' la colonne A	=>	0	année	abcisse 
    	diagrammes_donnees(1).StartRow = 1					' la ligne 2	=>	1	début de la ligne des données 
    	diagrammes_donnees(1).EndColumn = 1					' la colonne B	=>	1	Dette	ordonnée	
    	diagrammes_donnees(1).EndRow = 42					' la ligne 43	=>	42	fin de la ligne des données
     
     
    	' série dette %
     
    	' pour la donnée de la légende, en-tête de la colonne C à savoir "Dette - % PIB"
    	diagrammes_donnees(2).Sheet = 1
     
    	diagrammes_donnees(2).StartColumn = 2
    	diagrammes_donnees(2).StartRow = 0
    	diagrammes_donnees(2).EndColumn = 2
    	diagrammes_donnees(2).EndRow = 0
     
    	' pour les données autres
    	' la numérotation des feuilles, des lignes et des colonnes commence à 0	
    	diagrammes_donnees(3).Sheet = 1						' la feuille ( "Feuille2" ) avec l'index 1
     
    	diagrammes_donnees(3).StartColumn = 0				' la colonne A	=>	0	année	abcisse 
    	diagrammes_donnees(3).StartRow = 1					' la ligne 2	=>	1	début de la ligne des données 
    	diagrammes_donnees(3).EndColumn = 2					' la colonne C	=>	2	Dette %	ordonnée	
    	diagrammes_donnees(3).EndRow = 42					' la ligne 43	=>	42	fin de la ligne des données
     
    ..........
     
    	diagrammes_1 = document.Sheets(6).Charts
    	diagrammes_1.addNewByName("diagramme_nom_2",diagrammes_position_dimension,diagrammes_donnees(),True,True)	
     
    	diagramme_1 = diagrammes_1.getByName("diagramme_nom_2").EmbeddedObject
     
    	diagramme_1.Diagram = diagramme_1.createInstance("com.sun.star.chart.LineDiagram")
     
    	' titre axe des ordonnées secondaire ( y )
     
    	diagramme_1.Diagram.HasSecondaryYAxis = True
    	'diagramme_1.Diagram.HasSecondaryYAxisDescription = True
    	diagramme_1.Diagram.HasSecondaryYAxisTitle = True
     
    	diagramme_1.Diagram.SecondYAxisTitle.String = "% PIB"
    	diagramme_1.Diagram.SecondYAxisTitle.TextRotation = 0
     
     
    	' lissage du diagramme => 0 : pas de lissage , 1: spline cubique , 2 : spline B
     
    	diagramme_1.Diagram.SplineType = 0 
     
     
    	' modifier le symbole des points
    	' SYMBOL0	=>	carré
    	' SYMBOL1	=>	losange
    	' SYMBOL2	=>	triangle vers le bas
    	' SYMBOL3	=>	triangle vers le haut
    	' SYMBOL4	=>	triangle multidirectionnel
    	' SYMBOL5	=>	triangle multidirectionnel
    	' SYMBOL6	=>	2 triangles qui se font face horizontalement
    	' SYMBOL7	=>	2 triangles qui se font face verticalement
     
    	diagramme_1.Diagram.SymbolType = com.sun.star.chart.ChartSymbolType.SYMBOL1
     
    	diagramme_1.Diagram.YAxis.AutoMin = False	
    	diagramme_1.Diagram.YAxis.AutoMax = False
     
    	diagramme_1.Diagram.YAxis.Min = 0
    	diagramme_1.Diagram.YAxis.Max = 3000	
     
    	diagramme_1.Diagram.SecondaryYAxis.AutoMin = False	
    	diagramme_1.Diagram.SecondaryYAxis.AutoMax = False
     
    	diagramme_1.Diagram.SecondaryYAxis.Min = 0
    	diagramme_1.Diagram.SecondaryYAxis.Max = 200	
     
    	Xray diagramme_1.Diagram
            'Xray diagramme_1.Diagram.Yaxis
            'Xray diagramme_1.Diagram.SecondaryYAxis
    J'ai vérifié avec l'outil Xray les valeurs pour le minimum et le maximum de l'axe y primaire et de l'axe y secondaire,
    Ils ont les bonnes valeurs fournies mais pas d'effet sur le diagramme.
    Une idée ?

    Merci pour votre aide,
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Tableur] CALC - macro diagramme modifier un diagramme de type line avec points et lignes
    Par quark22 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 27/02/2023, 22h38
  2. Définir des droits pour une application
    Par Jimmy91 dans le forum Windows
    Réponses: 3
    Dernier message: 29/04/2015, 18h31
  3. [OpenOffice][Tableur] Aidez moi pour une macro dans calc svp !
    Par kakakikol dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 28/10/2010, 09h41
  4. Diagramme des cas d'utilisation pour une application de traitement d'images
    Par anubis_1001 dans le forum Cas d'utilisation
    Réponses: 1
    Dernier message: 18/07/2010, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo