Macro modifier titre ordonnées et abcisses - J'y suis presque

Bonjour à toutes et à tous !

Je possède un fichier excel avec de nombreux graphiques et je souhaite une macro me permettant de renommer automatiquement les titres de mes axes :

Ordonnéees --> Concentration (µg/l)

Abcisses --> Date

en cherchant sur les différents forums, j'en suis arrivé au code détaillé ci-desous.

Cette macro me nargue car :

si je sélectionne un graph puis lance la macro : cela fonctionne mais uniquement pour le graph sélectionné

si je clique sur une cellule au hasard puis lance la macro : Run-time erreur '91' : Object variable or with block variable not set

qu'est ce que je dois rajouter à ma macro pour quelle s'éxecute automatiquement à tous les graphiques de la feuille utilisée ?

Petite question bonus :

si je souhaite en profiter pour définir les mêmes minimum et maximum pour les abcisses est ce que c'est possible en utilisant :

.Axes(xlValue).MinimumScale = 41153

.Axes(xlValue).MaximumScale = 42917

Si oui, comment l'intégrer dans ma macro ?

voici le code de ma macro :

Sub Renommer_axes()
'
' Renommer_axes Macro
'
Dim ch As ChartObject

 For Each ch In ActiveWorkbook.ActiveSheet.ChartObjects

    ActiveChart.Axes(xlValue).AxisTitle.Select
    ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Concentration (µg/l)"
    Selection.Format.TextFrame2.TextRange.Characters.Text = "Concentration (µg/l)"
    With Selection.Format.TextFrame2.TextRange.Characters(1, 20).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 20).Font
        .BaselineOffset = 0
        .Bold = msoFalse
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(89, 89, 89)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 10
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With
    ActiveChart.Axes(xlCategory).AxisTitle.Select
    ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date"
    Selection.Format.TextFrame2.TextRange.Characters.Text = "Date"
    With Selection.Format.TextFrame2.TextRange.Characters(1, 4).ParagraphFormat
        .TextDirection = msoTextDirectionLeftToRight
        .Alignment = msoAlignCenter
    End With
    With Selection.Format.TextFrame2.TextRange.Characters(1, 4).Font
        .BaselineOffset = 0
        .Bold = msoFalse
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(89, 89, 89)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 10
        .Italic = msoFalse
        .Kerning = 12
        .Name = "+mn-lt"
        .UnderlineStyle = msoNoUnderline
        .Strike = msoNoStrike
    End With
    Next
End Sub

Bonjour

Tu devrais joindre ton fichier complet...

Bye !

Bonjour GMB,

le problème c'est que mes données sont sensibles et appartiennent au client ....

je ne pensais pas avoir besoin de joindre un fichier vu que ce que je demande peut s'appliquer à n'importe quel graphique non ?

Dans le doute, j'ai mis un fichier avec 2 graphiques en exemple.

ma macro fait toujours la même chose, cad, elle fonctionne sur un graphique si je le sélectionne mais bug si je suis sur une cellule au hasard....

21book2.xlsm (26.57 Ko)

Essaie en ajoutant cette instruction :

For Each ch In ActiveWorkbook.ActiveSheet.ChartObjects

ch.Select

ActiveChart.Axes(xlValue).AxisTitle.Select

Bonjour gmb,

merci pour ton aide !

je me doutais bien qu'il ne manquait pas grand chose mais vu que je n'ai pas les bases et que je bidouille avec ce que je trouve sur le net...

en tout cas, merci bien d'avoir prit un peu de ton temps pour me répondre et bonne journée à toi!

Rechercher des sujets similaires à "macro modifier titre ordonnees abcisses suis presque"