Macro couleur graph histogramme empilé
Bonjour à tous,
Je souhaites réaliser une macro pour changer automatiquement les couleurs de mon graphique histogramme empilé, en sachant que ce graphique proviens d'un TCD. Il s'agit d'un classeur où un utilisateur entre ses données et tout est traité sous forme de graphique. Quand je modifie manuellement les couleurs puis vide les données avant d'enregistrer, à la réouverture l'action sur les couleurs n'est pas conservée. J'ai alors enregistré les actions de changement via l'enregistrement de macro, mais quand je réutilise le code, il m'indique erreur sur la ligne -> With Selection.Format.Fill.
Pour info j'ai 4 champs de légende qui sont fixes ("acceptable" en vert, "a contrôler" en jaune, "critique" en orange et "inacceptable" en rouge )
Sub Couleur()
'
' Macro1 Macro
'
'
Sheets("Maîtrise par unité de travail").Select
ActiveSheet.ChartObjects("Graphique 3").Activate
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Solid
End With
ActiveChart.Legend.LegendEntries(2).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 102, 0)
.Transparency = 0
.Solid
End With
ActiveChart.Legend.LegendEntries(3).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Transparency = 0
.Solid
End With
ActiveChart.Legend.LegendEntries(4).Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 204, 0)
.Transparency = 0
.Solid
End With
ActiveChart.ChartArea.Select
Sheets("DU").Select
ActiveWindow.SmallScroll Down:=-75
End Sub
Merci d'avance.
Problème résolu avec ce code, par contre comment faire en sorte que l'on ne voit pas excel faire les modif ? Merci
Sheets("Maîtrise par unité de travail").Select
ActiveSheet.ChartObjects("Graphique 3").Activate
ActiveChart.SeriesCollection("Inacceptable").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Solid
End With
ActiveChart.SeriesCollection("Critique").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 102, 0)
.Solid
End With
ActiveChart.SeriesCollection("A contrôler").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
.Solid
End With
ActiveChart.SeriesCollection("Acceptable").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 204, 0)
.Solid
End With
Bonjour
en tout début de ta macro
Application.ScreenUpdating = FalseCordialement
Merci beaucoup. Bonne soirée
Bonjour,
Je débute en VBA et ce sujet m'a déjà bien aidé mais il y a encore une petite chose qui ne marche pas.
J'aimerais faire un deux histogramme empilés (sur le même graphique) dont les couleurs se mettent automatiquement selon la légende.
Pour cela j'ai un tableau avec une partie représentant des temps observés pour une machine et une autre des temps pour un opérateur. Chaque ligne de temps est associée à une ligne qui classe ce temps selon trois catégorie "VA", NVA" et "Pertes". En gros ça donne:
Ligne 1: classement VA/NVA/Pertes pour la machine
Ligne 2: Temps machine
Ligne 3: classement VA/NVA/Pertes Opérateur
Ligne 4: Temps opérateur
Pour l'instant je n'ai fait que histogramme de l'opérateur (je n'ai pas trouvé comment en superposer 2 sur un même graphique...). J'aimerais que Les parties VA soit vertes, NVA jaunes et Pertes rouges. En reprenant le code précédent et en l'adaptant j'ai réussi à appliquer les bonnes couleurs seulement sur le premier segment VA, le premier segment NVA et le premier segment Pertes. Est ce que quelqu'un saurait comment faire pour que cela s'applique à mon histogramme en entier?
Ci dessous mon code:
Sub Couleur()
With ActiveChart
If ActiveChart Is Nothing Then
MsgBox "Selectionnez d'abord le graphique du simogramme"
Exit Sub
End If
ActiveChart.SeriesCollection("Pertes").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0.5
.Solid
End With
ActiveChart.SeriesCollection("NVA").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 160, 0)
.Transparency = 0.2
.Solid
End With
ActiveChart.SeriesCollection("VA").Select
With Selection.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(50, 204, 0)
.Transparency = 0.3
.Solid
End With
End With
End SubMerci d'avance