Graphique à partir d'une listbox
Bonjour,
Je n'arrive à faire correspondre un choix d'une listbox pour alimenter un graphique. Je présice les series sont en lignes et non en colonnes.
Si je choisis les 5 series, seul la 2 et la 4 se tracent correctement!
De plus, la légende ne se crée pas en fonction des choix de la listbox.
J'ai du mal avec ce code que j'ai récupéré sur le net... :oops:
L'alimentation de la listbox:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
'récupération nom du fichier excel actif
nomfichier = ActiveWorkbook.Name
'permet de faire reference a la feuille sans avoir a tout taper
Set MaFeuille = Workbooks(nomfichier).Worksheets("global")
'référence à la plage de données
Set p0 = MaFeuille.Range("a1:m1")
Set p1 = MaFeuille.Range("a3")
Set p2 = MaFeuille.Range("a5")
Set p3 = MaFeuille.Range("a7")
Set p4 = MaFeuille.Range("a9")
Set p5 = MaFeuille.Range("a11")
Set PlageDonnees = Union(p1, p2, p3, p4, p5)
Me.ListBox1.MultiSelect = fmMultiSelectMulti
'rempli les zones de la liste avec les noms des series
For cmpt = 1 To Cells(Rows.Count, "a").End(xlUp).Row
If PlageDonnees.Cells(cmpt).Value <> 0 Then
Me.ListBox1.AddItem PlageDonnees.Cells(cmpt).Value
End If
Next cmpt |
Le tracé du graphique en fonction des choix:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
'permet de faire reference a la feuille sans avoir a tout taper
Set MaFeuille = Workbooks(nomfichier).Worksheets("Global")
'référence à la plage de données
Set p0 = MaFeuille.Range("b1:m1") 'axe des x
Set p1 = MaFeuille.Range("b3:m3")
Set p2 = MaFeuille.Range("b5:m5")
Set p3 = MaFeuille.Range("b7:m7")
Set p4 = MaFeuille.Range("b9:m9")
Set p5 = MaFeuille.Range("b11:m11")
Set PlageDonnees = Union(p1, p2, p3, p4, p5) 'valeurs des y
'Application.ScreenUpdating = False
For compteur = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(compteur) Then
If MonGraphe Is Nothing Then
Set MonGraphe = Workbooks(nomfichier).Charts.Add
MonGraphe.ChartArea.Clear
MonGraphe.ChartType = xlXYScatterSmoothNoMarkers
End If
Set PlageY = PlageDonnees.Rows(compteur)
Set PlageX = MaFeuille.Range("b1:m1")
Set MaSerie = MonGraphe.SeriesCollection.NewSeries
With MaSerie
.Values = PlageY
.XValues = PlageX
End With
With MonGraphe
.SeriesCollection(compteur).Name = PlageDonnees.Cells(compteur, 1).Value
End With
End If
Next compteur
With MonGraphe
'Titre du graphique
.HasTitle = True
With .ChartTitle
.Text = "Comparaison entre les différents lots"
'.Border.LineStyle = xlThin
'.Shadow = True
End With
End With
With MonGraphe
'action sur l'axe des X
Set Axe = .Axes(xlCategory, xlPrimary)
With Axe
.HasTitle = True
.AxisTitle.Text = Workbooks(nomfichier).Worksheets("Global").Range("a1").Value
End With
'action sur l'axe des ordonnées à gauche
Set Axe = .Axes(xlValue, xlPrimary)
With Axe
.HasTitle = True
.AxisTitle.Text = Workbooks(nomfichier).Worksheets("Global").Range("N3").Value
End With
End With |
Merci de m'aider sur ce coup...svp
Tremens ;)