XL 2013 Graphique avec plage axe des abscisses variable

mariebasile

XLDnaute Nouveau
Bonjour à tous,
j'ai une petite préocupation j'ai écrit la macro suivante pour générer un graphique avec des series que j'ai definie préalablement dans le gestionnaire de noms. j'ai également definit dans la macro deux axes:
-axe_1 lorsque je souhaite afficher mes données par semaine (52 lignes) avec numero de semaines
-axe_2 lorsque je souhaite afficher mes données par mois (12 lignes) c'est la mon problème mon axe ne se redimensionne pas automatiquement. je vous joint ma macro ainsi que les resultats obtenus.
merci infiniment pour vous eclairages
VB:
Sub graphique_1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Call delete
Call Definition_serie1
Call Definition_serie2
Call Definition_serie3

Dim m As Long
Dim gr, ws As Worksheet
Dim axe_1, axe_2, pl1, serie1, serie2, serie3, serie4, serie5 As Range
Set gr = Sheets("Graphiques")
Set ws = Sheets("Zone de Contrôle")
Set axe_1 = ws.Range(ws.Cells(7, 38), ws.Cells(59, 38))
Set axe_2 = ws.Range(ws.Cells(5, 117), ws.Cells(16, 117))

m = gr.Cells(2, 2).Value


With gr.ChartObjects("Chart 5").Chart
  .ChartType = xlLine
   Do Until .SeriesCollection.Count = 0 'boucle supprimant toutes les séries jusqu'à ce qu'on arrive à zéro
       .SeriesCollection(1).delete
  Loop
End With

If m = 1 Then
    Set axe_1 = ws.Range(ws.Cells(7, 38), ws.Cells(59, 38))
    gr.ChartObjects("Chart 5").Activate
    ActiveChart.ChartType = xlLine
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Values = ws.Range("serie1")
    ActiveChart.SeriesCollection(1).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Values = ws.Range("serie2")
    ActiveChart.SeriesCollection(2).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(3).Values = ws.Range("serie3")
    ActiveChart.SeriesCollection(3).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(4).Values = ws.Range("serie4")
    ActiveChart.SeriesCollection(4).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(5).Values = ws.Range("serie5")
    ActiveChart.SeriesCollection(5).XValues = axe_1

End If
If m = 2 Then
    Set axe_1 = ws.Range(ws.Cells(5, 117), ws.Cells(16, 117))
    gr.ChartObjects("Chart 5").Activate
    ActiveChart.ChartType = xlLine
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Values = ws.Range("serie1")
    ActiveChart.SeriesCollection(1).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Values = ws.Range("serie2")
    ActiveChart.SeriesCollection(2).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(3).Values = ws.Range("serie3")
    ActiveChart.SeriesCollection(3).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(4).Values = ws.Range("serie4")
    ActiveChart.SeriesCollection(4).XValues = axe_1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(5).Values = ws.Range("serie5")
    ActiveChart.SeriesCollection(5).XValues = axe_1
End If

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Parcourir
End Sub
 

Pièces jointes

  • graphique semaine.PNG
    graphique semaine.PNG
    18.9 KB · Affichages: 21
  • graphique mois.PNG
    graphique mois.PNG
    10.7 KB · Affichages: 23

Statistiques des forums

Discussions
315 093
Messages
2 116 122
Membres
112 666
dernier inscrit
Coco0505