Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Graphe mixte

  • Initiateur de la discussion Initiateur de la discussion menal
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

menal

XLDnaute Nouveau
Bonjour,
Je voulais tracer une graphique contenant à la fois un histogramme et une courbe est ce c’est possible par vba? Et est ce que je peux faire un axe secondaire?
Cordialement
 
Solution
Bonjour menal

Oui, c'est possible.
Sans fichier exemple, difficile de fournir une meilleure reponse. Cependant, avec l'enregistreur de macros, je te propose ce code a adapter a tes donnes reeles. La plage de donnees est E2:F8 avec le titre des series en ligne 2.
VB:
Sub Macro1()
    Range("E2:F8").Select
    ActiveSheet.Shapes.AddChart2(322, xlColumnClustered).Select
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(2).ChartType = xlLine
    ActiveChart.FullSeriesCollection(2).Select
    ActiveChart.FullSeriesCollection(2).AxisGroup = 2
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(2).Select
End Sub

La partie de declaration de l'axe...
Bonjour menal

Oui, c'est possible.
Sans fichier exemple, difficile de fournir une meilleure reponse. Cependant, avec l'enregistreur de macros, je te propose ce code a adapter a tes donnes reeles. La plage de donnees est E2:F8 avec le titre des series en ligne 2.
VB:
Sub Macro1()
    Range("E2:F8").Select
    ActiveSheet.Shapes.AddChart2(322, xlColumnClustered).Select
    ActiveChart.FullSeriesCollection(1).ChartType = xlColumnClustered
    ActiveChart.FullSeriesCollection(2).ChartType = xlLine
    ActiveChart.FullSeriesCollection(2).Select
    ActiveChart.FullSeriesCollection(2).AxisGroup = 2
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.FullSeriesCollection(2).Select
End Sub

La partie de declaration de l'axe secondaire pour la serie 2 est la suivante :
Code:
    ActiveChart.FullSeriesCollection(2).AxisGroup = 2
 
Bonjour,
J'ai un problème bête je cherche à attribuer la même couleur à la série 1 et 3 ( 2 et 4 ) mais il refuse je sais pas pourquoi.

Merci d'avance
Voici mon code:

Sub TracerTempFinSeq()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "Gragique" Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
ws.Delete
Application.ScreenUpdating = True
End If
Next
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Gragique"
Dim Grf As ChartObject
Set ws = Sheets("Gragique")
For Each Grf In ws.ChartObjects
If Grf.Name = "Variation de Force" Then
Grf.Delete
Exit For
End If
Next Grf
Set Grf = ws.ChartObjects.Add(140, 10, 500, 300)
Grf.Name = "Variation de TempFinSeq"
Set Grf = ws.ChartObjects.Add(140, 10, 500, 300)
With Grf.Chart
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.ChartType = xlColumnClustered
.Values = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[C2:C20]
.XValues = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeq4Seq"
.Interior.Color = RGB(0, 0, 255)
End With
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlColumnClustered
.Values = Sheets("TempfinSeqMesure-TempfinSeqLam").[C2:C20]
.XValues = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeqLam"
.Interior.Color = RGB(255, 0, 0)

End With
.SeriesCollection.NewSeries

With .SeriesCollection(3)
.AxisGroup = 2
.ChartType = xlLine
.Values = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[E2:E20]

.XValues = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeq4Seq"
.Interior.Color = RGB(0, 0, 255)
End With
.SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 2
.ChartType = xlLine
.Values = Sheets("TempfinSeqMesure-TempfinSeqLam").[E2:E20]

.XValues = Sheets("TempfinSeqMesure-TempfinSeq4Seq").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeqLam"
.Interior.Color = RGB(255, 0, 0)
End With
.HasTitle = True
.ChartTitle.Characters.Text = "Variation de TempFinSeq"
End With
End Sub
 
Re-Bonjour menal.

1- Pour ameliorer la visibilite de test posts, merci d'utiliser les balises [ CODE=vb] et [ /CODE] (sans espaces)
2 - Ensuite, merci de joindre un fichier exemple avec des donnees fictives et ton code adapte au fichier exemple pour que l'on puisse tester et corriger.
 
Voici mon Code:
Code:
Sub TracerTempFinSeq()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "Gragique" Then
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
ws.Delete
Application.ScreenUpdating = True
    End If
Next
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Gragique"
Dim Grf As ChartObject
Set ws = Sheets("Gragique")
For Each Grf In ws.ChartObjects
    If Grf.Name = "Variation de Force" Then
        Grf.Delete
        Exit For
    End If
Next Grf
Set Grf = ws.ChartObjects.Add(140, 10, 500, 300)
Grf.Name = "Variation de TempFinSeq"
With Grf.Chart
  .SeriesCollection.NewSeries
  With .SeriesCollection(1)
  .ChartType = xlColumnClustered
    .Values = Sheets("Feuil2").[C2:C20]
    .XValues = Sheets("Feuil2").[A2:A20]
    .Name = "TempfinSeqMesure-TempfinSeq4Seq"
     .Interior.Color = RGB(0, 0, 255)
  End With
  .SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlColumnClustered
    .Values = Sheets("Feuil1").[C2:C20]
    .XValues = Sheets("Feuil1").[A2:A20]
    .Name = "TempfinSeqMesure-TempfinSeqLam"
    .Interior.Color = RGB(255, 0, 0)
  End With
  .SeriesCollection.NewSeries
  With .SeriesCollection(3)
    .AxisGroup = 2
   .ChartType = xlLine
    .Values = Sheets("Feuil2").[E2:E20]
    .XValues = Sheets("Feuil2").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeq4Seq"
   .Interior.Color = RGB(0, 0, 255)
  End With
  .SeriesCollection.NewSeries
With .SeriesCollection(4)
.AxisGroup = 2
  .ChartType = xlLine
    .Values = Sheets("Feuil1").[E2:E20]

    .XValues = Sheets("Feuil1").[A2:A20]
.Name = "TempfinSeqMesure-TempfinSeqLam"
.Interior.Color = RGB(255, 0, 0)
  End With
  .HasTitle = True
    .ChartTitle.Characters.Text = "Variation de TempFinSeq"
End With
End Sub
 

Pièces jointes

Re-Bonjour

Pour la serie 3, il te faut remplacer la ligne
VB:
.Interior.Color = RGB(0, 0, 255)
par la ligne
VB:
.Format.Line.ForeColor.RGB = RGB(0, 0, 255)
Et pour la serie 4, il te faut remplacer la ligne
VB:
.Interior.Color = RGB(255, 0, 0)
par la ligne
VB:
.Format.Line.ForeColor.RGB = RGB(255, 0, 0)
 
ça marche merci bcoup 🙂
Est ce c'est possible de masquer le nom de la série 3 et 4 ?
J'ai essayé aussi de nommer les axes mais ça marche pas pour l'axe secondaire
VB:
With .Axes(xlCategory, xlPrimary)
 .HasTitle = True
.AxisTitle.Characters.Text = "Durée(s)"
End With
With .Axes(xlValue, xlPrimary)
      .HasTitle = True
      .AxisTitle.Characters.Text = "%relatif"
      End With
      With .Axes(xlValue, xSecondery)
      .HasTitle = True
      .AxisTitle.Characters.Text = "%cummulée"
      End With
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
91
Réponses
7
Affichages
138
Réponses
7
Affichages
471
Réponses
2
Affichages
333
  • Question Question
Microsoft 365 Histogramme
Réponses
4
Affichages
262
  • Question Question
Microsoft 365 Mediane occupation
Réponses
6
Affichages
153
  • Question Question
Microsoft 365 Màj Graph
Réponses
5
Affichages
110
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…