Intégration graphique dans chaque feuille

Résolu
JustinPrydou Messages postés 2 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010 - 13 janv. 2010 à 10:16
JustinPrydou Messages postés 2 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010 - 13 janv. 2010 à 13:18
Bonjour à tous,

Je débute depuis 1 semaine en vba et j'ai un petit soucis au niveau de l'intégration d'un graphique dans chaque feuille de mon classeur.

J'ai une liste de Pays avec des données que je recoupe dans une feuille par pays. Je souhaite donc ensuite créer un graphique pour chaque pays avec les données contenues dans la nouvelle feuille de celui-ci.

Voici où j'en suis au niveau du code:

Sub test()

For i = 1 To Sheets.Count
If Left(ThisWorkbook.Sheets(i).Name, 1) <> "#" Then

ThisWorkbook.Sheets(i).Activate
Ligne_Fin_Feuille = Sheets(i).Cells(65536, 1).End(xlUp).Row
zone = "B2:" & "B" & Ligne_Fin_Feuille & "," & "D2:" & "E" & Ligne_Fin_Feuille
zone1 = "D2:" & "D" & Ligne_Fin_Feuille
zone2 = "E2:" & "E" & Ligne_Fin_Feuille

With Worksheets(i).ChartObjects.Add _
(Left:=100, Width:=375, Top:=75, Height:=225)
.Chart.SetSourceData Source:=Worksheets(i).Range(zone)
.Chart.ChartType = xlColumnStacked
'.Chart.SeriesCollection.Add zone1, zone2
.Chart.SeriesCollection(1).Values = Worksheets(i).Range(zone1)
.Chart.SeriesCollection(1).Name = "PCP"
.Chart.SeriesCollection(2).Values = Worksheets(i).Range(zone2)
.Chart.SeriesCollection(2).Name = "TOTALPCP"
.Chart.Location Where:=xlLocationAsObject, Name:=Sheets(i).Name
End With


J'obtiens une erreur sur la ligne en gras:
"Impossible de lire la propriété SeriesCollection de la classe Chart"

• Je ne suis pas très à l'aise encore avec les define, donc j'ai surement du oublier qqch de ce côté là.
• Je comprends pas pourquoi la SeriesCollection(1) fonctionne (mon graphique contient bien les valeurs de cette série) mais pas la 2ème?

Si quelqu'un peut me venir en aide ça serait sympa, je pense que c'est juste une ânerie mais compliquée à trouver pour moi :P

Merci :)

2 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
13 janv. 2010 à 13:12
Salut
Tu sembles vouloir accéder à une collection dont le nombre de membres n'est pas suffisant.
L'indice 2 ne doit pas exister.
Pourquoi la ligne Chart.SeriesCollection.Add zone1, zone2 est-elle en commentaire ?
Ce doit être elle qui définit le nombre de membres, non ?
Voir aussi SeriesCollection.Extend si tu dois ajouter des données à un membre existant.
Peut-être que cette forme serait plus judicieuse (d'après l'aide de la fonction) :
.Chart.SeriesCollection.Add Worksheets(i).Range(zone1)
.Chart.SeriesCollection(1).Name = "PCP" 
.Chart.SeriesCollection.Add Worksheets(i).Range(zone2)
.Chart.SeriesCollection(2).Name = "TOTALPCP" 

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
JustinPrydou Messages postés 2 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 13:18
La ligne en commentaire marchait pas j'ai oublié de la supprimer en postant mon message :)

J'avais trouvé juste avant d'aller manger et n'ai pas eu le temps de mettre à jour mon message mais en effet ta solution est bonne!

Merci de ton aide
3