[VBA] Problème sur une plage de valeurs variables d'un graphique

Djihell

XLDnaute Nouveau
Messieurs/dames bonjour,

Tout d'abord je tiens à remercier ce forum qui m'a grandement aidé jusqu'ici sur la réalisation de ma macro. Tout les problèmes que j'ai pu rencontrer avaient déjà été résolus par l'un d'entre vous^^

Mais là je bloque et ne trouve rien sur le net.. J’espère que vous pourrez m'aider.

Une partie de ma macro consiste à mettre à jour les valeurs d'un graphique à partir d'une plage de données variable.
En ordonnées j'ai des valeurs numérique, et en abscisse des heures.

Voici ma macro :
(en gras la ligne qui ne marche pas)

Sub graph()
' graph Macro
Dim e As Double
Dim x As Double
Dim p As Double
Dim g As Double
Dim h As Double
Dim mx As Integer

a = Sheets("Page de garde").Range("S26").Value 'a: nb ligne
e = a + 8 'première ligne de valeur
x = Sheets("Page de garde").Range("S25").Value 'nb colonne
p = x + 23 'pour 2em graph
g = Sheets("Données en charge").Cells(9, 2)
h = g

For i = 9 To e 'calcul du min et max
For j = 2 To x
valeur = Sheets("Données en charge").Cells(i, j)
If Sheets("Données en charge").Cells(i, j) > g Then
g = Sheets("Données en charge").Cells(i, j)
End If
If Sheets("Données en charge").Cells(i, j) < h Then
h = Sheets("Données en charge").Cells(i, j)
End If
Next j
Next i
seb = g
seb2 = h



Sheets("Graphes Température en charge").Select
ActiveSheet.Unprotect "jljljl"
Range("Y64").Select
Selection.AutoFill Destination:=Range("Y64:BV64"), Type:=xlFillDefault
Range("Y65").Select
Selection.AutoFill Destination:=Range("Y65:BV65"), Type:=xlFillDefault

ActiveSheet.ChartObjects("Graphique 1").Activate
Set c = Sheets("Données en charge").Range("C8")
Do While c <> ""
With ActiveChart
.SeriesCollection.NewSeries 'Ajoute une série
With .SeriesCollection(.SeriesCollection.Count)
.Name = c 'Nom de la série
.XValues = Sheets("Données en charge").Range(Cells(9, 1), Cells(e, 1)) 'abscisses
.Values = Sheets("Données en charge").Range(c.Offset(1, 0), c.Offset(1, 0).End(xlDown)) 'ordonnées
End With
End With
Set c = c.Offset(0, 1) 'Décalage de 1 colonnes à gauche pour voir la prochaine série

Loop
ActiveChart.SeriesCollection(1).Values = Sheets("Données en charge").Range("B9:B1449")
ActiveChart.SeriesCollection(1).XValues = Sheets("Données en charge").Range(Cells(9, 1), Cells(e, 1))
ActiveChart.PlotArea.Select
ActiveChart.Axes(xlValue).MaximumScale = g + 1
ActiveChart.Axes(xlValue).MinimumScale = h - 1

Avec la première ligne je viens sélectionner le nombre maximum de valeurs possibles (dans certains cas j'aurai beaucoup moi de valeurs à prendre en compte mais j'arrives à gérer le min et max de l'échelle a l'aide de macro)

Avec la deuxième ligne, je viens sélectionner mes valeurs en abscisses. dans un premier temps je pensais appliquer la même méthode que pour l'ordonnée. Seulement dans mes options de graphique, le min,max,graduation,.. ont disparus.. Et vu que je viens selectionner des cases vides, mon graph n'est pas centré et impossible de zoomer..
Je me suis donc dit qu'en sélectionnant pile poil les valeurs à mettre en x le problème serait résolu ! D'où le "range(cells...)"

Mais j'obtiens systématiquement un message d'erreur l'orsque je lance ma macro.. ("Erreur définie par l'objet ou l'application")

Et si je met juste un range("A9:A..") pas de problèmes

Avez vous une idée de la raison?

Je crois pas avoir été très clair mais si vous voulez plus d'info n’hésitez pas..
 

youky(BJ)

XLDnaute Barbatruc
Re : [VBA] Problème sur une plage de valeurs variables d'un graphique

Bonjour et bienvenu pour le 1er poste,
Peut être......
.XValues = Sheets("Données en charge").Range("A9:A" & e).Value
comme on doit avoir plusieurs données le .value s'impose
Bruno
 

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T