Excel - Macro

Bonjour,

Je suis toute nouvelle sur le forum et novice sur la macro et j'aurais besoin de vos lumière si vous le voulez bien.

A partir d'un tableau excel de + de 100 lignes, je cherche à créer une macro pour obtenir un graphique par ligne.

Je m'explique :
chaque ligne correspond un client (N° - Nom - prénom.....) avec un nombre de produits par mois.
Je souhaite obtenir un graphique d'évolution par client pour l'année.
La finalité est de pouvoir inclure ces résultats ( graphiques ) lors d'un publipostage word.

J'ai réussi à faire la macro suivante :

Sub GraphPS()
'
' GraphPS Macro
'

'
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Range("Feuil1!$A$1:$J$130")
    ActiveChart.SetSourceData Source:=Range("A1:I2")
    ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A1:A" & i)
End Sub


A partir de cette macro mon graphique se créer bien mais avec un message d'erreur :
Erreur d'éxécution '9':
L'indice n'appartient pas à selection.

De plus les éléments qui devraient se trouver sur mon axe des absisses, se trouvent dans ma légende....

J'avoue que je suis completement dépassée.

Pourriez-vous me venir en aide ?
Je vous remercie vivement.

Bonne fin de journée.

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour

    1. sur quelle instruction se produit l'erreur?
    2. Il y a trois affectations différentes en fin de procédure aux données source du graphique, seule la dernière sera prise en compte
    3. aucune valeur n'est affectée à la variable i de la dernière ligne, donc i=0

    4. Peux tu envoyer une partie de ton classeur anonymisée et au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message

    Cordialement
    1. 1. - l'erreur se fait sur la dernier ligne de ma macro
      C'est bien ce que je te disais (point 3) la variable i n'a pas de valeur attribuée donc vaut 0 et la plage "A1:A" & i est la plage A1:A0 ce qui provoque une erreur
      Il te faut donc attribuer à i une valeur
      ex1: i = 10 si la plage est A:A10
      ex2. si i est la dernière ligne non vide de la colonne A
      i = Sheets("chrono").Range("A" & Rows.Count).End(xlUp).Row

      2. ton fichier n'est pas au format excel 2003 je ne peux pas le lire (fichier/enregistrer sous/type ... xls)
      1. Deux petites remarques avant de continuer
        1. ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A1:A" & i)
        il n'y a pas de feuille "chrono" dans ton fichier, donc, normal que ça plante,
        sans compter la valeur de i

        2. Si j'ai compris, tu veux faire un graphique par ligne soit 129 graphiques
        Créer un graphique avec une macro, c'est très lourd, en effet, il te faut programmer toues les caractéristiques de ton graphique: taille, couleurs, polices, marques, etc ... et ça, je ne me le sens pas
        Je pense que le plus simple serait de fabriquer un graphique bien fignolé correspondant à la première ligne de données (de la feuille Feuil1, StatPS ?)
        la macro ferait alors les copies de ce graphique (dans quelle feuille ?)
        Un truc de ce genre https://www.cjoint.com/?3Bonk0nCLqi
        Si ça te va, tu fais ce graphique, penses aus titre, légendes, quadrillages, taille, etc ... et tu t'inspire de mon exemple ou tu me renvoies le fichier
        1. Bonjour,

          Je te remercie beaucoup du coup de pouce. Je pense effectivement partir sur la deuxième solution.
          Merci et bonne journée.