Excel - Macro

isagate Messages postés 4 Statut Membre -  
isagate Messages postés 4 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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)
    0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  5. isagate Messages postés 4 Statut Membre
     
    Bonjour,

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