Bonjour,

J'ai adapté une macro , dont voici le résultat, elle fonctionne parfaitement
jusqu'a l'ajout d'une courbe ou colonne supplémentaire .

Lors de la boulce en j ( next listbox, et effacement des données ci-dessous)
J'ai un message d'erreur m'indiquant : erreur d'exécution 9
l'indice n''appartient pas à la selection

A ce niveau, il m'efface la plage et non exclusivement les données

Erase Plage

Bien Cordialement

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Dim i As Integer, x As Integer
Dim j As Integer, l As Integer, b As Integer
Dim Tableau(), Plage()

l = Worksheets("graphique").Range("B2").End(xlDown).Row
x = 10

'suppression des séries existantes dans le ChartSpace
For i = Cht.SeriesCollection.Count To 1 Step -1
        Cht.SeriesCollection.Delete i - 1
Next i

With graphique

ReDim Tableau(l)
ReDim Plage(l)


'Définit les abscisses(plage de cellules H1:N1)
For i = 1 To l
    Tableau(i) = .Cells(2 + i, 9)
Next i

With Cht
    'Permet l'affichage des légendes
    .HasLegend = True
    'Affiche les légendes sous le graphique
    .Legend.Position = chLegendPositionBottom
    'Attribue un titre
    .HasTitle = True
    .Title.Caption = graphique.Range("A1") & " - " & graphique.Range("D1")
    
End With
'Définit le type de graphique
If ToggleButton1.Caption = "Graphique en Colonne" Then
 'histogramme en colonne
    Cht.Type = C.chChartTypeColumnClustered3D
    Else
    'histogramme en courbe
    Cht.Type = chChartTypeLine
      
End If


'Boucle sur les éléments de la listbox
For j = 0 To ListBox1.ListCount - 1

    'Identifie les items sélectionnés
    If ListBox1.Selected(j) = True Then 'And j <= 0 Then
        
    'Création de la 1ere série
   'If Cht.SeriesCollection.Count > 0 Then
    Cht.SeriesCollection.Add
   
    'Récupération des ordonnées pour chaque série
        For i = 1 To l
            Plage(i) = .Cells(2 + i, 10 + j)
            'Plage(i) = .Cells(2 + i, 10)
        Next i
        
        
                
        With Cht
            'Ajoute le tableau d'abscisses
            .SetData C.chDimCategories, C.chDataLiteral, Tableau
            'Ajoute la légenge pour chaque serie
            .SeriesCollection(b).Caption = graphique.Cells(2, x + j)
            'Affiche valeur de chaque point
            .SeriesCollection(b).DataLabelsCollection.Add
            'Définit la position des valeurs affichées (au dessus par défaut)
            'Dans la barre pour cet exemple
            .SeriesCollection(b).DataLabelsCollection(0).Position = chLabelPositionCenter
            'Les valeurs de l'histogramme seront affichées en couleur blanche.
            '.SeriesCollection(x).DataLabelsCollection(0).Font.Color = RGB(0, 102, 0) 'RGB(0, 102, 0)
            .SeriesCollection(b).DataLabelsCollection(0).NumberFormat = "#,##0.00"
            'Ajoute le tableau d'ordonnées ( Plage() )
            .SeriesCollection(b).SetData C.chDimValues, C.chDataLiteral, Plage
            'Définit la couleur de la série
            .SeriesCollection(b).Interior.Color = 60000 * (j + 5)
          
        End With
        
        
        b = b + 1
        'Efface le contenu du tableau
        Erase Plage
        End If
Next j

End With