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 :

graphique avec plusieurs courbes


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut graphique avec plusieurs courbes
    Bonjour tout le monde

    Voilà, je dispose d'une matrice d'une taille de 1000 lignes et 10 colonnes. Je souhaiterai afficher un graphique qui m'affiche 10 courbes qui correspondent chacune à l'une des colonnes.

    Pour l'instant, la seule solution que j'ai trouvé, c'est de déclarer 10 vecteurs colonnes dans lesquels je répartie les valeurs de la matrice.

    Voilà le code pour mon graphe :

    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
    Charts.Add
     
    ActiveChart.Location _
    Where:=xlLocationAsObject, Name:="Feuil2"
     
    With ActiveChart
        .HasTitle = True
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = tableau()
        .SeriesCollection(1).Values = tableau1()
        .SeriesCollection.NewSeries
        .SeriesCollection(2).XValues = tableau()
        .SeriesCollection(2).Values = tableau2()
     
        .ChartType = xlLine
    End With
    où tableau est un vecteur qui contient toutes les valeurs entières de 1 à 1000, et tableau1 et tableau2 les deux vecteurs intermédiaires des deux premières colonnes de ma matrice.

    est-ce que quelqu'un peut m'aider svp?

    merci d'avance

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim LastLig As Long
    Dim Ch As ChartObject
     
    Application.ScreenUpdating = False
    With Worksheets("Feuil2")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set Ch = .ChartObjects.Add(200, 100, 450, 300)
        Ch.Chart.ChartType = xlLine
        Ch.Chart.SetSourceData .Range("A1:J" & LastLig), PlotBy:=xlColumns
        Set Ch = Nothing
    End With

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    ça aurait pu fonctionné, mais j'ai oublié de préciser que mes données ne sont pas rentrées dans une feuille excel, mais bien dans un tableau de données créé comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim table(999, 9) As Double
    du coup je ne suis pas sure que le bout de code que tu m'as passé puisse fonctionner dans mon cas

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une procédure générique qui a comme paramètre la variable tableau Tb
    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
    22
    Sub CreatGraph(Tb As Variant)
    Dim Ch As ChartObject
    Dim Res() As Double
    Dim i As Long
    Dim k As Byte
     
    Application.ScreenUpdating = False
    Set Ch = Worksheets("Feuil2").ChartObjects.Add(200, 100, 450, 300)
    ReDim Res(LBound(Tb, 1) To UBound(Tb, 1))
    With Ch.Chart
        .ChartType = xlLine
        For k = LBound(Tb, 2) To UBound(Tb, 2)
            With .SeriesCollection.NewSeries
                For i = LBound(Tb, 1) To UBound(Tb, 1)
                    Res(i) = Tb(i, k)
                Next i
                .Values = Res
            End With
        Next k
    End With
    Set Ch = Nothing
    End Sub
    Qu'on appelle comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Tracer()
    Dim LastLig As Long
    Dim Tableau As Variant
     
    With Worksheets("Feuil2")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        Tableau = .Range("A1:J" & LastLig).Value
    End With
    CreatGraph Tableau
    End Sub

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Ca y est ça marche, merci beaucoup

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

Discussions similaires

  1. [PROC GPLOT] Réaliser un graphique avec plusieurs courbes par année
    Par titoine15 dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 30/04/2015, 14h38
  2. Graphique dynamique avec plusieurs courbes
    Par thefutureisnow dans le forum Débuter
    Réponses: 1
    Dernier message: 12/07/2011, 13h56
  3. [XL-2007] Graphique avec plusieurs types de courbes
    Par qltmi dans le forum Excel
    Réponses: 4
    Dernier message: 20/04/2010, 21h14
  4. Interface graphique avec plusieurs fenêtres
    Par Copps dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/03/2005, 18h00

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