Pb "Subscipt out of range" sur affichage graphique en VBA

expender

XLDnaute Nouveau
Bonjour,

je me permets de vous soliciter afin de trouver une erreur qui je pense est mineure mais que je n'arrive pas à résoudre depuis un petit moment. J'obtiens à chaque fois la même erreur avec le code suivant :

Sub Graph_Evol_Alloc()
'
' Graph_Evol_Alloc Macro, creation du graph de l'alloc pour chaque asset
'
'variables pour l'affichage
Dim fichier, onglet, cell_debut, cell_fin, plage As String

fichier = Range("'Graphiques'!$C$6").Value
onglet = Range("'Graphiques'!$C$11").Value
cell_debut = Range("'Graphiques'!$D$12").Value
cell_fin = Range("'Graphiques'!$D$13").Value

plage = cell_debut & ":" & cell_fin

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Workbooks("fichier").Sheets("onglet").Range("plage")
ActiveChart.ChartType = xlAreaStacked100
ActiveChart.ApplyLayout (3)

End Sub

Ce dernier a pour but d'afficher un graphique dans mon fichier excel en prenant comme paramètre les différentes variables plus haut. Le fichier ou les informations sont stockées est bien ouvert et j'ai regardé en faisant un "watch" sur chaque variable afin de m'assurer que je recupère bien les bonnes valeurs. Néanmoins j'ai tjrs cette erreur.

Elle se produit lorsque le code arriver sur la ligne :
" ActiveChart.SetSourceData Source:=Workbooks("fichier").Sheets("onglet").Range("plage") "

J'ai émis l'idée que chaque variable récupére mes données avec des "" et que je rajoute aussi des "" au niveau de ma ligne Source pour chaque variable, est-ce que cela ne ferait pas doublon ?

Merci d'avance de votre aide, cordialement.
 

mikachu

XLDnaute Occasionnel
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Bonjour,

juste une petite question, sur la ligne ou tu as le défaut, le code est réellement écrit comme tu l'as indiqué ? "Rang e" ?
Si c'est le cas, supprime l'espace en trop.

Sinon, il nous faudrait le fichier afin d'y regarder de plus près...
 

expender

XLDnaute Nouveau
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Pardon,

il s'agit d'une faute de frappe, il n'y a pas cet espace dans mon code.

Que faudrait-il comme information ?
J'ai juste mon fichier ou je cherche à afficher mon graphique avec dans le même fichier les informations (onglet "Graphiques"). Et un deuxième fichier de data avec les infos pour chaque client par onglet.
 

mikachu

XLDnaute Occasionnel
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Il faudrait ton fichier. exempt de toute donnée confidentielle..

ce message apparait lorsque tu fais référence à une source qui n'existe pas (exemple: si tu marque sheets("feuille1")... au lieu de sheets("feuil1")...

Vérifie que toutes les rérérences à feuilles classeur, nom de liste de données... existent bien.
Si tu fais appel à un classeur externe, assures-toi que ledit classeur soit bien ouvert au moment de l'exécution de la macro.

Je ne peux t'en dire plus sans voir le fichier
 

Dranreb

XLDnaute Barbatruc
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Bonsoir.
Vortre problème vient de ce qu'il n'existe pas de cllasseur nommé "fichier". D'ailleurs un nom de classeur se termine en général par ".xls" (voire .xlsx ou .xlsm avec les nouvelles versions).
Peut être existe-t-il un classeur dont le nom est contenu dans la variable fichier, je ne sais pas. Dans ce cas il faut mentionner la variable fichier et non la constante "fichier".
À +
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Bonjour,

Pour faire suite au commentaire de Dranreb et à la fin de votre message, il faut probablement enlever les "" autours des variables -- fichier, onglet et plage --:

Code:
ActiveChart.SetSourceData Source:=Workbooks("fichier").Sheets("onglet").Range("plage")

par

Code:
ActiveChart.SetSourceData Source:=Workbooks(fichier).Sheets(onglet).Range(plage)

À tester...
 

expender

XLDnaute Nouveau
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Tout d'abord merci pour vos réponses.

Grand Chaman Excel, j'ai aussi pensé à cela et donc que les "" étaient en trop, mais si j'enleve ces derniers au niveau de la ligne sourcedata, je ne peux pas lancer la macro.

Dranreb, j'ai justement déclaré les variables plus haut, néanmoins étant un débutant, j'ai pu (du) mal faire la déclaration. Dois-je changer quelque chose ?

Merci d'avance.
 
C

Compte Supprimé 979

Guest
Re : Pb "Subscipt out of range" sur affichage graphique en VBA

Re,

GCE t'avait donné la solution, je ne vois pas ou était ton problème

Code:
Sub Graph_Evol_Alloc()
'
' Graph_Evol_Alloc Macro, creation du graph de l'alloc pour chaque asset
'
'variables pour l'affichage
  Dim fichier, onglet, cell_debut, cell_fin, plage As String
  ' Avec l'objet conteneur : feuille "Graphiques"
  With Sheets("Graphiques")
    fichier = .Range("$C$6").Value
    onglet = .Range("C$11").Value
    cell_debut = .Range("$D$12").Value
    cell_fin = .Range("$D$13").Value
    plage = cell_debut & ":" & cell_fin


    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Workbooks(fichier).Sheets(onglet).Range(plage)
    ActiveChart.ChartType = xlAreaStacked100
    ActiveChart.ApplyLayout (3)
  End With
End Sub

Nota : un classeur Excel 2010 contenant des macros doit être enregistré en ".xlsm"
sinon tu perds tout ;)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 505
Membres
103 565
dernier inscrit
Fabien78