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 :

Code pour créer un graphique sur données qui peuvent varier


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique sur données qui peuvent varier
    Salut à tous! Voici mon problème : je cherche le code d'un graphique sachant 1) Que je souhaite faire le graphique pour des données situées dans deux colonnes séparées entre elles par d'autres colonnes et 2) Sachant que les lignes du tableau peuvent varier!

  2. #2
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    voici un code de démonstration

    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 addGraphics()
     
     
    Dim co As ChartObject, ch As Chart
    Dim sc1 As Series, sc2 As Series
     
    Set co = ActiveSheet.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
    Set ch = co.Chart
    ch.ChartType = xlColumnClustered
     
    Set sc1 = ch.SeriesCollection.NewSeries
    Set sc2 = ch.SeriesCollection.NewSeries
    sc1.Name = reference nom première série
    sc1.Values = reference valeur première serie
    sc2.Name = reference nom deuxième série
    sc2.Values = référence valeur deuxième série
     
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique avec des données qui varient
    Merci mayekeul pour ta réponse. Cependant, le graphique que j'obtiens ne représente pas les données. Je pense qu'il y a un problème au niveau des sc1.values et sc2.values.
    Voici ce que j'ai fait :

    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
    19
    20
    Sub addGraphics()
     
    Dim co As ChartObject, ch As Chart
    Dim sc1 As Series, sc2 As Series
    Dim PremLig As Integer, derlig As Long
        PremLig = 1
        derlig = Split([Feuil1].UsedRange.Address, "$")(4)
     
    Set co = ActiveSheet.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
    Set ch = co.Chart
    ch.ChartType = xlColumnClustered
     
    Set sc1 = ch.SeriesCollection.NewSeries
    Set sc2 = ch.SeriesCollection.NewSeries
    sc1.Name = "Date"
    sc1.Values = Worksheets("Feuil1").Range("A" & PremLig & ":A" & derlig)
    sc2.Name = "Adj Close"
    sc2.Values = Worksheets("Feuil1").Range("G" & PremLig & ":G" & derlig)
     
    End Sub
    En fait, en abscisses il y aura les dates (qui sont au format J/M/A) et en ordonnées les "Adj Close" (cours de cloture).

    A l'aide!

  4. #4
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    alors que représente [Feuil1].usedrange.address ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique sur données qui peuvent varier
    En fait, c'est un code qui permet de détecter la dernière ligne du tableau qui contient des nombres. Donc, j'ai pensé appliquer ce code pour tenir compte de la variabilité des lignes, pour réaliser le graph.
    Je suis une débutante donc je suis peut-être dans le faux.

  6. #6
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    je disais ça car si ton graphique ne renvoie pas ce que tu veux, c'est donc que les renseignement que l'on lui a fourni sont erronés

    vérifie simplement sur quoi les séries pointent une fois le graphique crées

    soit aussi certaine que tu emploies bien le bon type de graphique

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique sur données qui peuvent varier
    En ordonnées, je pense que j'obtiens les dates, non pas au format J/M/A mais au format nombre. En abscisses, j'ai des nombres qui ne correspondent à aucune des données de mon graphique. En fait, je souhaite faire une courbe d'évolution des cours d'un indice en fonction des dates.

  8. #8
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    quand tu édite les propriété du graphiques, que te renseigne t-il comme références sur tes deux séries?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique sur données qui peuvent varier
    Effectivement, je n'ai pas pensé à regarder la plage de données du graphique. En principe, les séries sélectionnées sont les bonnes, mais les chiffres ne correspondent pas.
    Peut-être que j'aurais dû préciser que le tableau est de format csv. En fait, c'est un tableau que j'ai téléchargé et que j'ai importé dans un classeur excel.

  10. #10
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    Peut-être que j'aurais dû préciser que le tableau est de format csv. En fait, c'est un tableau que j'ai téléchargé et que j'ai importé dans un classeur excel.
    cela n'a à ce niveau pas vraiment d'importance.

    Simplement, tu dois vérifier ce qu'il te renvoie et ce que tu lui demande.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique sur données qui peuvent varier
    Je voudrais que tu m'expliques certains de tes codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim co As ChartObject, ch As Chart
    Qu'est-ce-que tu déclares?

    De même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set co = ActiveSheet.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ch.ChartType = xlColumnClustered
    J'ai une petite idée mais je veux être certaine de ne pas me tromper.

  12. #12
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    Pour resumer

    co est le conteneur du chart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set co = ActiveSheet.ChartObjects.Add(*Left:=100, Width:=375, Top:=75, Height:=225)
    en le déclarant, on indique à quelle position on le place, ainsi que sa taille

    ch est le chart en lui même qui est contenu dans l'objet co donc

    ensuite, on défini le type de graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ch.ChartType = xlColumnClustered

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique avec des données qui varient
    Voici le code que j'ai modifié. Le programme fonctionne mais, il prend en compte toutes les colonnes du tableau alors que je ne veux que la colonne A et la colonne G. Je pense qu'il y a une erreur de syntaxe (ligne en gras).
    Voici le code.

    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
    19
    20
    21
    Sub Graph()
    
    Dim PremLig As Integer, derlig As Long
    PremLig = 1
    derlig = Split([Feuil1].UsedRange.Address, "$")(4)
    
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A" & PremLig & ":A" & derlig, "G" & PremLig & ":G" & derlig), _
        PlotBy:=xlColumns
        
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Evolution des cours"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
    
    End Sub


  14. #14
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("A" & PremLig & ":A" & derlig, "G" & PremLig & ":G" & derlig),
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("A" & PremLig & ":A" & derlig & ", G" & PremLig & ":G" & derlig),

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Code pour créer un graphique avec des données qui varient
    Ca y est!!! Ca marche!!

  16. #16
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    on y arrive!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/12/2011, 15h42
  2. Réponses: 2
    Dernier message: 27/04/2006, 16h45
  3. [VBA-A]Un code pour récupérer un type de donnée
    Par KEROZEN dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/04/2006, 16h56
  4. Probleme pour créer un base de données...
    Par _matt_44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 03/06/2005, 14h36
  5. quel langage pour créer des "applications" sur 1 s
    Par jaribu dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 30/07/2003, 14h06

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