IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec création d'un graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut Problème avec création d'un graphique
    Bonjour,

    J'ai un petit problème avec la création d'un graphique dans une macro.

    J'ai utilisé l'enregistreur pour avoir une base et m'en inspiré, et regardé un peu sur les forums, et la syntax me semblait plutot simple, mais impossible de l'exécuter finalement.

    Ou plutôt le graphique s'affiche mais pas du tout avec la bonne courbe, ils tracent des séries un peu au hasard. Est ce que c'ets un problème de syntax ? J'ai vérifié, la variable "Nb_mois" est bien passée donc ça ne viendrait à priori pas de la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Charts.Add
    ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.SeriesCollection(1).Name = _
       "=""Activité en fonction du cumul de charge"""
        ActiveChart.SeriesCollection(1).XValues = Range(Cells(17, 2), Cells(17, Nb_Mois))
        ActiveChart.SeriesCollection(1).Values = Range(Cells(5, 2), Cells(5, Nb_Mois))

  2. #2
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Bonjour

    Je pense que c'est parce que tu ne precise pas le fait que tu ajoutes une nouvelle series. Au passage, ton code permets de creer une feuille graphique et non un graphique dans une feuille (qui se nommerait a ce moment chartobject).

    Je suis etonne que le graphique marche en mettant juste Range(Cells......) car pour moi, en general je dois definir mes plage de donnees en tant que range avant

    J'ai teste ce code (en ayant definis Nb_Mois) et ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    sub graphique ()
    dim plage1 as range, plage2 as range
    'j'imagine que tu as egalement defini ta variable Nb_Mois dans ta procedure
     
    'j'ai mis sheet1 par defaut mais remplace par le nom de ta feuille contenant tes donnees
    set plage1=Sheet1.Range(Cells(17, 2), Cells(17, Nb_Mois))
    set plage2=Sheet1.Range(Cells(5, 2), Cells(5, Nb_Mois))
     
    ThisWorkbook.Charts.Add
    ActiveChart.ChartType = xlXYScatterSmooth
    ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(1).Name = "=""Activité en fonction du cumul de charge"""
        ActiveChart.SeriesCollection(1).XValues = plage1
        ActiveChart.SeriesCollection(1).Values = plage2
     
    end sub

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    ça fonctionne merci !

    Par contre il m'affiche la bonne courbe mais également d'autres séries prises au hasard dans le tableau.

    Est ce le fait que j'ai déclaré une série ?

    Et si je ne veux pas écrire le code en ajoutant des séries mais directement la courbe sur le graphique (je sais pas si c'est compréhsensible la !), j'enlève "seriescollection" ?

    Et question subsidiaire à y être : Je veux ensuite rajouter une courbe mais défini dans une autre macro, comment faire ? Est ce que si je donne un nom au graphique et que dans l'autre macro je mets "SeriesCollection(2)" ce sera bon ?


    Merci beaucoup pour ton aide, c'est pour le boulot, donc rester coincée ce n'est jamais facile !

  4. #4
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    En creant ton cette feuille Chart, tu as a la base aucune serie. C'est en utilisant .NewSeries que tu crees ta premieres series.

    Je ne vois donc pas pourquoi tu as une autre series qui affiche des valeurs au hasard. Quand tu cliques droit sur ton graph, tu as combien de series?

    Au passage, je remarque que ta selection est: Range(Cells(5, 2), Cells(5, Nb_Mois))
    si tu as 12 mois, d'apres le nom de ta variable j'en deduis que Nb_Mois=12 c'est bien ca?
    Si oui, a ce moment la, ta selection doit etre: Range(Cells(5, 2), Cells(5, Nb_Mois+1))
    car ta premiere colonne c'est la 2eme et non la premiere!

    Si non, et bien je ne vois pas pourquoi tu as d'autres valeurs que la plage de donnees definie

    Est ce que c'est seulement ton code? est ce que tu applique ce code a l'interieur d'une procedure qui possede du code supplementaire et qui peut faire varier cette plage de donnees?


    Pour inserer une courbe d'une autre macro dans ton 1er graphe, pour ma part, je pense que tu n'as pas d'autre choix que de creer une nouvelle serie (donc .newseries). Ensuite, dans cette autre macro, a un moment tu as du definir ta series, je donnerai donc un nom a cette serie de valeurs (via la methode Names.Add) et je reutiliserai ce nom dans la procedure du 1er graph. Quand tu fais le .newseries, tu fais juste SeriesCollection(2).Values = nom que tu as donne

    je ne sais pas si j'ai ete precis dans mes explications

    Mais sinon si tu veux simplement rajouter une courbe, tu as simplement a reselctionner la plage de donnees en question non? ca tient en 2 ligne de code.
    Ou alors j'ai peut etre mal compris la question

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Finalement je n'ai plus le problème de plusieurs séries, ça devait être un reste d'un de mes essais parcequ'en faisant re retourner ça a fonctionné !

    Et oui j'ai corrigé pour Nb_mois+1, sinon ça ne fonctionnait pas !


    En fait je pense qu'il faut que je mette la partie du code sur le graphique dans la feuille elle même, parceque la elle se trouve dans le code de l'userform, et du coup je crois que ça plante un peu.

    Je vais tenter de me dépatouiller et je reviens vers toi si je n'y arrive pas !

    Merci =)

  6. #6
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 909
    Par défaut
    Bonjour,
    Je n'ai pas tout lu dans le topic mais ai noté quelques points :
    Lorsque tu génères les données d'un graphique sous Excel, je crois qu'il faut avant tout supprimer les éventuelles séries présentes.
    J'ai développé récemment une application concernant les graphes sous Excel et j'ai rencontré ce type de problème.

    Ensuite, concernant le code dans l'userform, je ne pense pas que cela ait d'impacts. Par contre, j'identifierai le graphique et les séries avec des "set".

    Cordialement,

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Des set comme pour les plages c'est ça ?
    Oui ce sera plus simple à manipuler

    Et pour les séries je crois que c'est ce qui s'est passé, je les ai supprimé et je n'ai plus se problème

  8. #8
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 909
    Par défaut
    Ok.
    Si problème, mets ton code actuel afin de voir où tu en es.
    Cordialement,

Discussions similaires

  1. Problème avec la génération de graphique
    Par Mr_asticot dans le forum Jasper
    Réponses: 3
    Dernier message: 16/02/2010, 16h37
  2. [JXL] Problème avec création de feuille excel
    Par mittim dans le forum Documents
    Réponses: 2
    Dernier message: 10/08/2006, 15h40
  3. Réponses: 9
    Dernier message: 05/04/2006, 17h48
  4. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 12h05
  5. Problème avec création de fenêtre dynamique
    Par FredericB dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/09/2005, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo