Bonjour à tous,

Je débute en VBA et j'ai actuellement un problème pour la conception d'une macro qui doit me permettre de tracer des courbes.

Je dispose d'un tableau d'enregistrement dont la taille varie suivant les cas. Je compte donc les lignes de ce tableau, récupère les valeurs...et souhaite les tracer. Si le nombre de point est faible (inférieur à 30), aucun problème tout se trace correctement. Par contre, si mon nombre de données est important, j'ai un message d'erreur qui est le suivant:
"Impossible de définir la propriété XValues de la classe Series"

Je vous colle ci-dessous mon code en espérant que quelqu'un y voit la boulette qui me bloque.

Merci d'avance

Config:
Excel 2003
Windows XP

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
 
Dim time_Range As Range
Dim pression_Range As Range
Dim temperature_Range As Range
 
Dim time As Variant
Dim temperature As Variant
Dim pression As Variant
 
Sub utilisegraphique()
 
'Je déclare des plages qui sont trop grandes car je ne sais pas combien de lignes j'ai dans mon fichier
Set time_Range = Worksheets("Feuil").Range("a2:a1000")
Set pression_Range = Worksheets("Feuil").Range("c2:c1000")
Set temperature_Range = Worksheets("Feuil").Range("b2:c1000")
 
'Je compte le nombre de ligne que j'ai dans mes tableaux (le comptage est 'basique mais étant donné que je débute, je ne connais pas encore la 'fonction qui pourrait être plus raffinée)
 
For i = 1 To 1000
    If IsEmpty(time_Range.Cells(i)) Then
        i = 1000
    Else
        j = j + 1
    End If
Next i
 
'Je dimensionne mes vecteurs à la bonne dimension
ReDim time(1 To j) As Double
ReDim pression(1 To j) As Double
ReDim temperature(1 To j) As Double
 
'J'affecte les valeurs à mes vecteurs
 
For i = 1 To j
    time(i) = time_Range.Cells(i)
    pression(i) = pression_Range.Cells(i)
    temperature(i) = temperature_Range.Cells(i)
Next i
 
'Je réalise mes graphes
 
Call Graphique(time, pression, "Pression en fonction du temps", "Temps [s]", "Pression [bar]", "Pression")
Call Graphique(time, temperature, "Temperature en fonction du temps", "Temps [s]", "Temperature [°C]", "Temperature")
 
End Sub
 
Sub Graphique(a As Variant, b As Variant, Titre As String, LegendeX As String, LegendeY As String, Nom As String)
 
    Charts.Add
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).XValues = a
    ActiveChart.SeriesCollection(1).Values = b
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Nom
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = Titre
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = LegendeX
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = LegendeY
    End With
 
End Sub