Bonjour
J'ai un petit problème sur une macro. Voici ce que je souhaite faire
J'ai huit colonnes de données et je veux faire des graphs de ces données 2 par 2 (un paramètre vs un autre).
Mon problème est le suivant : les graphs crées contiennent plusieurs séries. Ils ont tous la même abscisse et chaque série correspond aux données entre les deux colonnes que je veux réellement avoir. J'arrive à les enlever et j'obtiens au final ce que je souhaite.mais j'aimerais bien comprendre ce qu'il se passe. Je suppose que mon Range est mal défini. Une idée?
Voici mon code :

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
Private Sub CommandButton6_Click()
 
Application.ScreenUpdating = False
 
 Dim x As Range
 Dim y As Range
 Dim nbrdate As Integer
 Dim données As Worksheet
 
 If OptionButton1.Value = True Then
 Set données = Sheets("Données")
 Else: Set données = Sheets("Données lissées")
 End If
 
 'on compte le nbre de ligne
 données.Activate
 nbrdate = données.Range("B1", [B65000].End(xlUp)).count
 
 'on supprime les anciens graphs
         Dim iChtIx As Long, iChtCt As Long
 
         iChtCt = Sheets("Corrélations").ChartObjects.count
         If iChtCt <> 0 Then
         For iChtIx = 1 To iChtCt
            Sheets("Corrélations").ChartObjects(1).Delete
         Next
         End If
 
 
'début de la boucle pour tracer les graphs à partir des colonnes de données i et j.
Dim i, j As Integer
 
For i = 3 To 10
    For j = 3 To 10
        If i > j Then
 
        Set x = données.Range(Chr(i + 64) & "2:" & Chr(i + 64) & "" & nbrdate)
        Set y = données.Range(Chr(j + 64) & "2:" & Chr(j + 64) & "" & nbrdate)
        Sheets("Corrélations").Activate
 
'graphs
 
    Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SetSourceData Source:=données.Range(x, y), PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Corrélations"
    ActiveChart.HasLegend = False
    ActiveChart.HasTitle = False
    ActiveChart.PlotArea.Select
    With Selection.Border
        .ColorIndex = 16
        .weight = xlThin
        .LineStyle = xlContinuous
    End With
 
    With ActiveChart.SeriesCollection(1).Border
        .weight = xlThin
        .LineStyle = xlAutomatic
    End With
 
    'On enlève les séries en trop
    Dim nbrSeries As Integer
    Dim ser As Integer
 
    nbrSeries = ActiveChart.SeriesCollection.count
    MsgBox nbrSeries
    If nbrSeries > 1 Then
    For ser = 1 To nbrSeries - 1
    ActiveChart.SeriesCollection(1).Delete
    Next ser
    Else
    End If
 
    'et on arrange les graphs
    With ActiveChart.SeriesCollection(1)
        .MarkerBackgroundColorIndex = xlAutomatic
        .MarkerForegroundColorIndex = xlAutomatic
        .MarkerStyle = xlDiamond
        .Smooth = False
        .MarkerSize = 3
        .Shadow = False
    End With
 
    'delimite les bornes des échelles
    With ActiveChart.Axes(xlValue)
          .MinimumScale = UserForm2.Controls("TextBox" & (i - 2) * 10).Value
          .MaximumScale = UserForm2.Controls("TextBox" & (i - 2) * 10 + 1).Value
    End With
    With ActiveChart.Axes(xlCategory)
          .MinimumScale = UserForm2.Controls("TextBox" & (j - 2) * 10).Value
          .MaximumScale = UserForm2.Controls("TextBox" & (j - 2) * 10 + 1).Value
    End With
 
    ActiveChart.PlotArea.ClearFormats
    ActiveChart.Axes(xlValue).MajorGridlines.Delete
 
    ActiveChart.SeriesCollection(1).Select
    With Selection.Border
        .ColorIndex = 41
        .weight = xlThin
        .LineStyle = xlContinuous
    End With
    With Selection
        .MarkerBackgroundColorIndex = 41
 
        .MarkerForegroundColorIndex = 41
        .MarkerStyle = xlDiamond
        .Smooth = False
        .MarkerSize = 3
        .Shadow = False
    End With
 
        With ActiveChart
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = UserForm2.Controls("TextBox" & j - 2).Value
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = UserForm2.Controls("TextBox" & i - 2).Value
        End With
 
'on nomme le graph
 Sheets("Corrélations").ChartObjects(Sheets("Corrélations").ChartObjects.count).Name = i & j
 
'positionnement des graphs
         Dim MyWidth As Long, MyHeight As Long
         MyWidth = 250
         MyHeight = 150
 
             With ActiveSheet.ChartObjects(i & j)
                 .Width = MyWidth
                 .Height = MyHeight
                 .Left = (j - 3) * MyWidth
                 .Top = 200 + (i - 3) * MyHeight
             End With
'                 ActiveChart.PlotArea.Select
'                 Selection.Top = 15
'                 Selection.Width = 200
'                 Selection.Left = 5
'                 Selection.Height = 120
 
    With ActiveChart.ChartArea.Font
        .Name = "Calibri"
        .Size = 13
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .Background = xlAutomatic
    End With
 
 
 
 
 
        Else
        End If
 
    Next j
 
Next i
 
 
Unload UserForm1
 
Application.ScreenUpdating = True
 
End Sub
Merci!