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
Partager