HELP!!! Graphe VBA

Fermé
alst - 2 août 2013 à 17:22
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 4 août 2013 à 07:38
Bonjour,

Pour la premiere fois j essaye de faire un graphe en vba, mais voila je veux qu'il se mette a jour tout seul si je rajoute des lignes ou des colonnes dans mes donnees.

Ma plage de donnees, sur la "Sheet7" se compose de dates en colonne A, de noms en ligne 1, et de valeurs pour chaque intersection. Mes series sont les colonnes (B, C, D...)

Pour les lignes, en definissant et variabilisant la derniere ligne, j'arrive a prendre en compte toutes les lignes qui ne sont pas vides, mais pour les colonnes c'est une autre histoire...

Voila comment j'ai ecrit mon code:

Dim Last As Integer
Last = Sheets("Sheet7").Range("A" & Rows.Count).End(xlUp).row
'Last est donc le numero de la derniere ligne ou il y a qqc dans la colonne A

Dim c As Integer
' je veux c tel que de combien de colonnes j'offset a partir du range A1
Dim cc As Integer
cc = c + 1
' cc doit donc me donner le numero de la colonne ou je me trouve

With Sheets("Chart").ChartObjects.Add _
(Left:=100, Width:=375, Top:=75, Height:=225)
.Chart.ChartType = xl3DBarStacked

For c = 1 To (Sheets("Sheet7").Range("A1").End(xlToRight).Column - 1)
'pour la colonne 2 jusqu'a la derniere colonne ou il y a qqc dans la premiere ligne, je veux creer une serie:

If Sheets("Sheet7").Range("A1").Offset(0, c) > "" Then
.Chart.SeriesCollection.NewSeries
.Chart.SeriesCollection(cc).Name = Sheets("Sheet7").Cells(cc & "1")
.Chart.SeriesCollection(cc).Values = Range(Sheets("Sheet7").Cells(cc & "2"), Sheets("Sheet7").Cells(cc & Last))
.Chart.SeriesCollection(cc).XValues = Sheets("Sheet7").Range("A2:A6")
End If

Next c

Le probleme c'est que si mon programme semble reconnaitre quand arreter de creer des series puisque le graphe me presente une legende avec le bon nombre de series, il ne me met aucune donnees dans mon graphe... le graphe est entierement vide avec le quadrillage et les dates en ordonnees les series dans la legende, mais aucune donnees... Ah et la premiere serie n a pas de nom et les autres s appellent Series2, Series3....
Il me semble que le probleme est dans

.Chart.SeriesCollection(cc).Name = Sheets("Sheet7").Cells(cc & "1")
.Chart.SeriesCollection(cc).Values = Range(Sheets("Sheet7").Cells(cc & "2"), Sheets("Sheet7").Cells(cc & Last))

MAIS OU???

Si qqn a deja rencontre ce probleme, ou si l erreur lui saute aux yeux, j apprecierai vraiment son aide.

Mille fois merci par avance

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
4 août 2013 à 07:38
Bonjour

Cells(cc & "1") , il y a une inversion entre la colonne la ligne, et il faut une virgule comme séparateur

voici la syntaxe à utiliser: cells(1,cc)

de plus, à la lecture du code, si il est utilisé tel quel, il doit y avoir d'autres erreurs
- pas de "End with"
-pas de numéro de Graphique "Chart(?)", s'il y en a plusieurs, comment fait VBA pour les identifier?

bon courage
cdlt
0