Intégration graphique dans chaque feuille

Résolu
Signaler
Messages postés
2
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
13 janvier 2010
-
Messages postés
2
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
13 janvier 2010
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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)
Messages postés
2
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
13 janvier 2010

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