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 SubBonjour
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....
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!