Macro mise en forme graphique

Bonjour

J'aimerais écrire une macro permettant d'appliquer une mise en forme sur mes graphiques.

Mes graphiques se basent sur des TCD et il peut arriver que la mise en forme change lorsque je réinitialise mes données.

J'ai donc écrit une macro pour remettre la bonne mise en forme en un clic mais je n'arrive pas à arriver au résultat attendu à 100%

Si quelqu'un pourrait m'aider et au passage nettoyer la macro de toutes les lignes inutiles.

Merci d'avance

11test.xlsm (181.06 Ko)

Bonjour, j'ai déjà traité plusieurs sujet similaire (https://forum.excel-pratique.com/membre/59891/sujets), tu devrais aussi trouver une multitude de sujet similaire sur le forum. Comme je suis sympas je te donne aussi ce petit lien, je te conseil de mettre ce site en favoris https://forum.excel-pratique.com/membre/59891/sujets

Ne t'inquiete pas je vais regarder ton fichier mais je ne garanti pas un retour rapide

EDIT : j'ai ouvert ton fichier, oui il y a bien du nettoyage à faire. J'ai l'impression qu'il te manque juste .ForeColor.RGB = RGB(158, 158, 158) à ajouter à ton code pour ajouter la couleur grise ou je passe à coté d'aute chose ?

Voilà la logique de construction que je te conseil d'adopter, surtout si tu seras amené à ajuster le code dans le future. J'ai fait la partie pour une série de données pour donner l'exemple :

Private Sub Reset_Graph()
Dim Graph As Chart

    Set Graph = ThisWorkbook.Worksheets("Track Record").ChartObjects("Graph_TR1").Chart
    With Graph
        With .FullSeriesCollection(1)
            .ChartType = xlLineMarkers
            .AxisGroup = 1
            .MarkerStyle = 8
            .MarkerSize = 8
            .Format.Fill.Visible = msoTrue
            .Format.Fill.ForeColor.RGB = RGB(255, 255, 255)
            With .Format.Line
                .Visible = msoTrue
                .ForeColor.ObjectThemeColor = msoThemeColorText1
                .Weight = 2.5
            End With
            With .DataLabels.Format
                With .Fill
                    .Visible = msoTrue
                    .ForeColor.ObjectThemeColor = msoThemeColorText1
                End With
                With .TextFrame2.TextRange.Font
                    .Fill.Visible = msoTrue
                    .Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
                    .Bold = msoTrue
                End With
            End With
        End With
        With .FullSeriesCollection(2)

        End With
        With .FullSeriesCollection(3)

        End With
        With .FullSeriesCollection(4)

        End With
        With .FullSeriesCollection(5)

        End With
        With .FullSeriesCollection(6)

        End With
        With .FullSeriesCollection(7)

        End With
    End With

Bonjour,

Et si tu commençais par mettre tes données sous forme de tableau ?

Cela simplifierait sérieusement les choses. Et peut-être plus besoin de VBA, car tes données sont figées (à moins de rajouter des colonnes).

Cdlt.

9test.xlsm (178.26 Ko)

Bonsoir à vous

Merci pour votre aide, en effet j'aurais pu approfondir un peu mes recherches. Je vais pouvoir corriger et restructurer mon code avec vos conseils.

Pour vous répondre Jean Éric, de mémoire j'avais mis mes données sous forme de tableau mais j'avais aussi le même problème.

Merci à vous pour vos réponses

Bonjour à tous,

tu peux aussi l'enregistrer en tant que Modèle (clic-droit sur le graphique)
Ta macro se résumera à :
ActiveChart.ApplyChartTemplate ("C:\Users\Eric\AppData\Roaming\Microsoft\Templates\Charts\Graphique1.crtx")
Et en cas d'évolution tu as juste le modèle à écraser
eric

Bonjour Eric

Ok merci pour cette autre solution, mais ce c'est pas la meilleur solution car le fichier est utilisé par plusieurs autres personnes donc la macro ne marcheras pas s'ils n'enregistrent pas le modèle aussi de leur côté et qu'ils modifient le chemin d'accès.

Mais merci pour cette info, j'aurais été le seul utilisateur cela aurait simplifié les choses

Bonjour,

une macro peut aussi se charger de l'enregistrer s'il est absent ou si elle a l'info d'écraser l'ancien.
Juste pour info, c'est toi qui voit.
eric

Bonjour,

Effectivement oui mais bon comme j'ai déjà enregistré la macro je vais rester sur la solution initiale

Rechercher des sujets similaires à "macro mise forme graphique"