Des courbes en série

roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008 - 1 août 2008 à 15:33
roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008 - 8 août 2008 à 11:55
Bonjour,

voici mon problème:
j'ai une feuille excel2003 avec des données présentées comme suit :

<col style=\"width: 124pt;\" width=\"165\" /><col style=\"width: 60pt;\" span=\"3\" width=\"80\" />----
espece, 2005, 2006, 2007, ----
mus musculus, 12,5, 6,3, 7,2, ----
rattus norvegicus, , 15,6, 7,2, ----
caenorabditis elegans, 3, 8,9, 2

mais avec beaucoup plus de lignes que collé ici (112), je voudrais mettre au point une macro qui pour chaque ligne de ce tableau me construise une courbe...

voici la macro que j'ai construite avec l'assistant de excel pour faire UNE courbe:

Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 01/08/2008 par Olivier Glorieux
'

'
    ActiveCell.Offset(0, -3).Range("A1:C1").Select
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B2:D2"), PlotBy:= _
        xlRows
    ActiveChart.SeriesCollection(1).XValues = "=Feuil1!R1C2:R1C4"
    ActiveChart.SeriesCollection(1).Name = "=Feuil1!R2C1"
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "mus musculus"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
End Sub

je ne sais pas comment faire pour parcourir mon tableau et appliquer ce bout de code à chaque ligne, qu'en pensez vous?

Autre chose:
Est ce un probleme si toutes les courbes (112) appartiennent au final à la même cellule?

merci beaucoup,

Olivier

7 réponses

roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008
4 août 2008 à 17:18
re :

Vous êtes tous à la plage, ou ça n'inspire personne? :-)

Olivier
0
dezbut Messages postés 12 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 août 2008
7 août 2008 à 13:54
Tu parcours ton tableau avec un :
For i= "la première ligne du tableau" to "la dernière ligne du tableau step 1

"ton code"

end for

Après il faut adapter les noms de plages ^^ de cellule mais il nous faut plus d'info.

L'espèce est dans la cellule A1 ?
2005, 2006, 2007 respectivement dans les colonnes B,C et D ?
0
roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008
7 août 2008 à 14:10
Oui c'est cela, là ce serait des cellules de 'A1' à 'D4'

mais je ne sais pas comment on dit : la première ligne du tableau...

Merci,

Olivier
0
dezbut Messages postés 12 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 août 2008
7 août 2008 à 14:23
la première ligne = rows(1)

Bon, je ne comprend pas cette ligne :
ActiveCell.Offset(0, -3).Range("A1:C1").Select
Pourquoi A1:C1 ? tu ne faisais que les graphes sur 2005 et 2006 ?
(en fait après reflexion, je pense qu'il faut enmever cette ligne...)

Ca doit être un truc dans ce genre là...

option base 1

sub graph()
For i=2 to 112 step 1

Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Cells(i,2),cells(i,4)), plotBy:= _xlRows ' 4 = numéro de la dernière colonne de données
ActiveChart.SeriesCollection(i-1).XValues = Sheets("Feuil1").Range(Cells(i,2),cells(i,4))
ActiveChart.SeriesCollection(i-1).Name = cells(i,1)
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = cells(i,1).text
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
next i
end sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 10:52
Hello,

alors ça ne marche pas encore, voici le code que j'ai dans ma macro :

Sub Macro3()

For i = 2 To 112 Step 1

    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(Cells(i, 2), Cells(i, 4)), PlotBy:= _
        xlRows
ActiveChart.SeriesCollection(i - 1).XValues = Sheets("Feuil1").Range(Cells(i, 2), Cells(i, 4))
    ActiveChart.SeriesCollection(i - 1).Name = Cells(i, 1)
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = Cells(i, 1).Text
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
Next i
End Sub

et voici le message d'erreur : la methode Cells de l'objet _Global a échoué

tu en penses quoi?

Olivier
0
dezbut Messages postés 12 Date d'inscription lundi 20 novembre 2000 Statut Membre Dernière intervention 13 août 2008
8 août 2008 à 11:32
Bonjour

Essaye ça :

For i = 2 To 112 Step 1


Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range(Sheets("Feuil1").Cells(i, 2), Sheets("Feuil1").Cells(i, 4)), PlotBy:=xlRows
ActiveChart.SeriesCollection(1).XValues = Range(Sheets("Feuil1").Cells(i, 2), Sheets("Feuil1").Cells(i, 4))

ActiveChart.SeriesCollection(1).Name = Sheets("Feuil1").Cells(i, 1)
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Sheets("Feuil1").Cells(i, 1).Text
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next i
0
roievil Messages postés 7 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 8 août 2008
8 août 2008 à 11:55
PARFAIT !

merci beaucoup !

Olivier
0
Rejoignez-nous