Graphes - Erreur d'exécution 1004

Adamastor77

XLDnaute Nouveau
Bonjour tout le monde !


Je débute avec VBA et ai un petit souci avec l'un de mes premiers programmes.

Dans une routine, je renseigne les données suivantes sous forme de tableau:
ArraySpeed(1 to 4) : abscisse du graphe n°1
ArrayPower(1 to 4): ordonnée du graphe n°1
ArraySpeed_2(1 to 40): abscisse du graphe n°2
ArrayTorque(1 to 40): ordonnée du graphe n°2

Je mets ensuite à jour ces 2 graphes (déjà existants dans l'une des feuilles).
Pour le premier graphe, tout se passe bien:


'Préparation données graphique de puissance
ArraySpeed(1) = 0
ArrayPower(1) = 0

ArraySpeed(2) = n1
ArrayPower(2) = p1

ArraySpeed(3) = n2
ArrayPower(3) = p1

ArraySpeed(4) = n3
ArrayPower(4) = p3

'Mise à jour des valeurs du tableau dans la série du graphique
Set g1 = Worksheets("Moteur").ChartObjects(1).Chart

With g1
.SeriesCollection(1).XValues = ArraySpeed()
.SeriesCollection(1).Values = ArrayPower()
End With

'Mise à l'échelle des axes du graphique

'Mise à l'échelle de l'abscisse
With g1
.Axes(xlCategory).MinimumScale = 0
.Axes(xlCategory).MaximumScale = n3
End With

'Mise à l'échelle de l'ordonnée
g1.Axes(xlValue).MinimumScale = 0
If p1 < p3 Then
g1.Axes(xlValue).MaximumScale = p3 * 1.1
Else
g1.Axes(xlValue).MaximumScale = p1 * 1.1
End If


Pour le deuxième graphe, cela se gâte... la structure est identique mais j'obtiens une "erreur d'éxécution 1004": Propriété de la classe XValues impossible à définir

'Préparation données graphique de couple
'Tronçon couple constant(1er point)
ArraySpeed_2(1) = 0
ArrayTorque(1) = m1

'Tronçon puissance constante
inc = (n2 - n1) / 20
For compt = 2 To 21
ArraySpeed_2(compt) = n1 + (compt - 2) * inc
ArrayTorque(compt) = p1 * 1000 * 30 / ((compt - 2) * inc + n1) / pi
Next

'Tronçon puissance diminuant linéairement
inc = (n3 - n2) / 18
For compt = 22 To 40
ArraySpeed_2(compt) = n2 + (compt - 22) * inc
ArrayTorque(compt) = 5
Next

'Mise à jour des valeurs du tableau dans la série du graphique
Set g2 = Worksheets("Moteur").ChartObjects(2).Chart

With g2
.SeriesCollection(1).XValues = ArraySpeed_2()
.SeriesCollection(1).Values = ArrayTorque()
End With


'Mise à l'échelle des axes du graphique

'Mise à l'échelle de l'abscisse
With g2
.Axes(xlCategory).MinimumScale = 0
.Axes(xlCategory).MaximumScale = n3
End With

'Mise à l'échelle de l'ordonnée
g2.Axes(xlValue).MinimumScale = 0
g2.Axes(xlValue).MaximumScale = m1 * 1.1



J'ai souligné et mis en gras la ligne qui provoque l'erreur. J'ai contrôlé les données calculées et rentrées dans ArraySpeed_2() et ArrayTorque() et elles sont toutes correctes. La mise à jour des échelles de ce graphe fonctionne parfaitement par contre.

Une idée pour régler ce problème ?

Par avance, merci
Luis
 

Adamastor77

XLDnaute Nouveau
Re : Graphes - Erreur d'exécution 1004

Bonjour tout le monde !


J'ai pu mieux cerner d'où vient le problème. Voici une explication un peu plus claire que mon premier post:

Je calcule tous les éléments de 2 tableaux de dimensions 40 de la manière suivante:

Code:
ArraySpeed_2(1) = 0
ArrayTorque(1) = m1

For compt = 2 To 40
    ArraySpeed_2(compt) = (compt - 2) * inc1 + n1
    ArrayTorque(compt) = p1 * 1000 * 30 / ((compt - 2) * inc1 + n1) / pi

Les variables utilisées dans ces formules ont été déclarées de la manière suivante:

Code:
Dim n1 As Double
Dim p1 As Double
Dim m1 As Double

Const pi = 3.14159

Dim ArraySpeed_2(1 To 40) As Double
Dim ArrayTorque(1 To 40) As Double

Dim compt As Integer
Dim inc1 As Double

Jusque ici, tout va bien. J'ai sorti les données calculées pour les 2 tableaux sur une feuille et tout est correct.

Mes ennuis commencent quand je veux utiliser ces 2 tableaux de données comme resp. abscisse et ordonnée pour mettre à jour une série de données dans un graphe:

Code:
Set g2 = Worksheets("Moteur").ChartObjects(2).Chart 
    With g2
          .SeriesCollection(1).XValues = ArraySpeed_2()
          .SeriesCollection(1).Values = ArrayTorque()
    End With

J'obtiens alors l'érreur d'éxécution 1004 suivante:
Impossible de définir la propriétés XValues/Values de la classe Série

C'est comme s'il y avait conflit entre les différents types des variables utilisées dans mes formules.


Par avance, merci
Luis


Merci
 

Discussions similaires

Réponses
1
Affichages
208
Réponses
0
Affichages
188

Statistiques des forums

Discussions
312 677
Messages
2 090 822
Membres
104 677
dernier inscrit
soufiane12