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
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