Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 23h40   #1
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
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 :
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
eno97 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 00h08   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Par exemple
Code :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2012, 00h41   #3
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
ç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 :
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
eno97 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 01h11   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Une procédure générique qui a comme paramètre la variable tableau Tb
Code :
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 :
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
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/01/2012, 12h40   #5
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
Ca y est ça marche, merci beaucoup
eno97 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h26.


 
 
 
 
Partenaires

Hébergement Web