parcourir les graphiques

Le
titan95
Bonjour à tous.
Depuis deux jours, je suis confronté à un problème alors que l'objet de
mon code est tout banal. En effet, dans un classeur Excel, j'ai besoin
de parcourir les graphiques de toutes les feuilles de calcul et de les
activer. Voici le code utilisé :

Dim MonGraph As ChartObject
For compteur = 0 To UBound(ListeOnglets) 'on parcourt les noms
des différents onglets
OngletEnCours = ListeOnglets(compteur)
Sheets(OngletEnCours).Activate
For Each MonGraph In ActiveSheet.ChartObjects 'parcourt les
graphiques de la feuille active
ActiveSheet.ChartObjects(MonGraph.Name).Activate ==> c'est
ici que ç plante
'******* INSTRUCTIONS **********
End With
Next MonGraph
Next compteur

Voici ce qui se passe, sachant que chaque feuille comporte deux graphiques :
- onglet 1 : les deux graphiques sont trouvés et successivement activés
- onglet 2 : le premier graphique est trouvé et activé, mais le
deuxième graphique est trouvé (je récupère son nom = MonGraph.Name), et
quand on arrive à la ligne où il doit être activé, une erreur est
générée et on sort du programme.

Je suis sûr que quelqu'un dans ce forum a la solution ou me montrera la
raison du plantage de mon code. Je l'en remercie déjà.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
titan95
Le #24309151
Le 08/03/2012 18:33, titan95 a écrit :
Bonjour à tous.
Depuis deux jours, je suis confronté à un problème alors que l'objet de
mon code est tout banal. En effet, dans un classeur Excel, j'ai besoin
de parcourir les graphiques de toutes les feuilles de calcul et de les
activer. Voici le code utilisé :

Dim MonGraph As ChartObject
For compteur = 0 To UBound(ListeOnglets) 'on parcourt les noms des
différents onglets
OngletEnCours = ListeOnglets(compteur)
Sheets(OngletEnCours).Activate
For Each MonGraph In ActiveSheet.ChartObjects 'parcourt les graphiques
de la feuille active
ActiveSheet.ChartObjects(MonGraph.Name).Activate ===========> c'est ici
que ç plante
'******* INSTRUCTIONS **********
End With
Next MonGraph
Next compteur

Voici ce qui se passe, sachant que chaque feuille comporte deux
graphiques :
- onglet 1 : les deux graphiques sont trouvés et successivement activés
- onglet 2 : le premier graphique est trouvé et activé, mais le deuxième
graphique est trouvé (je récupère son nom = MonGraph.Name), et quand on
arrive à la ligne où il doit être activé, une erreur est générée et on
sort du programme.

Je suis sûr que quelqu'un dans ce forum a la solution ou me montrera la
raison du plantage de mon code. Je l'en remercie déjà.


Personne pour s'intéresser à mon cas ?
allsystem Hors ligne
Le #24315381
Le jeudi 08 Mars 2012 à 18:33 par titan95 :
Bonjour à tous.
Depuis deux jours, je suis confronté à un problème alors
que l'objet de
mon code est tout banal. En effet, dans un classeur Excel, j'ai besoin
de parcourir les graphiques de toutes les feuilles de calcul et de les
activer. Voici le code utilisé :

Dim MonGraph As ChartObject
For compteur = 0 To UBound(ListeOnglets) 'on parcourt les noms
des différents onglets
OngletEnCours = ListeOnglets(compteur)
Sheets(OngletEnCours).Activate
For Each MonGraph In ActiveSheet.ChartObjects 'parcourt les
graphiques de la feuille active
ActiveSheet.ChartObjects(MonGraph.Name).Activate ===========> c'est
ici que ç plante
'******* INSTRUCTIONS **********
End With
Next MonGraph
Next compteur

Voici ce qui se passe, sachant que chaque feuille comporte deux graphiques :
- onglet 1 : les deux graphiques sont trouvés et successivement
activés
- onglet 2 : le premier graphique est trouvé et activé, mais le

deuxième graphique est trouvé (je récupère son nom
= MonGraph.Name), et
quand on arrive à la ligne où il doit être activé,
une erreur est
générée et on sort du programme.

Je suis sûr que quelqu'un dans ce forum a la solution ou me montrera la
raison du plantage de mon code. Je l'en remercie déjà.


Bonjour,

Une chose qui m’interroge,

For compteur = 0 To UBound(ListeOnglets)

UBound(ListeOnglets) cela retourne l'indice le plus grand pour tes onglets.

Mais si tu démarres à 0, ne dois-tu pas mettre "UBound(ListeOnglets)-1" ?
Publicité
Poster une réponse
Anonyme