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

Macros et VBA Excel Discussion :

changer la mise en forme d'un graphique créé par une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 1
    Par défaut changer la mise en forme d'un graphique créé par une macro
    Bonjour à tous,
    Je suis débutant et je cherche à changer l'épaisseur ( ainsi que d'autre modification expliqué plus bas) de la courbe d'un graphique que j'ai créé via une macro. Le code que j'ai utilisé est totalement copié sur un code présenté sur ce forum, seulement voilà, je ne sais pas comment aller plus loin. vous trouverez ci-joint mon code :

    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
    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 = 14000 '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 = 2 '3ème feuille du graphique 
      Source(0).StartColumn = 3 'Colonne D
      Source(0).StartRow = 0  ' Ligne1 (attentio première ligne = étiquette)
      Source(0).EndColumn = 6 'Colonne fin 
      Source(0).EndRow = valeurt 'Ligne fin
     
     'Création du graphique 
    oCharts.addNewByName("Courbe des moments réduits",Rect ,Source(),True , True)  
     
    'Place le graphique dans la feuille de calcul 
    oChart = oCharts.getByName("Courbe des moments réduits").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.NONE  
     
      'Modifie la couleur de fond du graphique 
      .Diagram.wall.FillColor =RGB(255,255,255) 
     
      'Spécifie la valeur maxi de l'étiquette des ordonnées 
      '.Diagram.YAxis.Max = 200 
     
      'Attribue un titre à l'axe des abscisses 
      .Diagram.HasXAxisTitle = True  
      .Diagram.XAxisTitle.string = "X"  
     
      'Attribue un titre à l'axe des ordonnées   
      .Diagram.HasYAxisTitle = True  
      .Diagram.YAxisTitle.string = "M"  
     
      '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 = "Courbe des moments réduits" 
      .Title.CharColor = RGB(0,0,0) 
     
    	'inverse le sens des y
       .Diagram.YAxis.ReverseDirection = true

    Ce que je recherche (si cela existe) est donc :
    - un bout de code adapté pour modifier l'épaisseur des courbes tracés par le code
    - un bout de code pour modifier la taille des étiquette des axes X et Y
    - un bout de code pour afficher toutes les valeurs (étiquettes) de une seul série

    J'espère que mon message est assez clair et que vous pourrez m'aider

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Grimoult Voir le message
    Bonjour,

    Eh bien je pense que vous pouvez y arriver tout seul en créant une macro puis en modifiant manuellement chacune des propriétés souhaitées sur votre graphique. Une fois terminées vos modifications, fermez la macro et regardez ce qui aura été modifié avec l'enregistreur de macro.
    C'est cette méthode que nous employons lorsque nous ne connaissons pas la syntaxe.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je ne suis pas adepte de créer un graphique par macro. Normalement, le graphique préexiste à son utilisation. Ca fait partie de la conception d'un classeur de créer un graphique avec les outils de l'interface Excel, et c'est pour moi un défaut de conception que de devoir le créer par macro.

    On crée le décor (tableaux structurés, graphiques, TCD, formules, etc) et on y amène les données, éventuellement par VBA. Toute autre approche va immanquablement déboucher sur l'usine à gaz...


    My two cents
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2007] Comment régler le format de l'axe d'un graphique créé par une macro ?
    Par BastLat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2014, 10h07
  2. [XL-2003] Changer la propriété Caption d'un bouton de commande par une macro
    Par Domimart dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 23/09/2009, 16h34
  3. Changer la mise en forme dans un modèle
    Par h_maha dans le forum Mise en forme
    Réponses: 2
    Dernier message: 16/01/2007, 17h49
  4. changer la mise en forme de champs heures
    Par ben5985 dans le forum Access
    Réponses: 5
    Dernier message: 14/12/2006, 15h37
  5. changer la mise en forme d'une partie d'un textarea
    Par gedeon555 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/08/2006, 11h48

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