Macro + Graph excel
Dernière réponse : dans Programmation
J 'ai fais une macro me permettant de traiter un fichier texte en le transformant en excel puis ensuite de ce meme fichier, il m'en fait un graph.
Le seul problème c'est ke le fichier texte peut varier et peut donc comporter de 1 à 50 données pour le graph
Comment dans ma macro je peux lui indiquer de s'arreter à la fin des données. Car pour le moment si je mets
ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A1:A5")
il ne me prend que les 5 premières données
et si je mets
ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A:A")
Mon graph ne fonctionne pas car il me prend toute la ligne A et forcement des cases sont vides.
Dernière précision mes données seront toujours dans la colonne A
Le seul problème c'est ke le fichier texte peut varier et peut donc comporter de 1 à 50 données pour le graph
Comment dans ma macro je peux lui indiquer de s'arreter à la fin des données. Car pour le moment si je mets
ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A1:A5")
il ne me prend que les 5 premières données
et si je mets
ActiveChart.SetSourceData Source:=Sheets("chrono").Range("A:A")
Mon graph ne fonctionne pas car il me prend toute la ligne A et forcement des cases sont vides.
Dernière précision mes données seront toujours dans la colonne A
Autres pages sur : macro graph excel
Lassé par la pub ? Créez un compte
Merci Galopin mais en faite j'ai trouvé une autre méthode qui est :
ActiveChart.SetSourceData Source:=Sheets("chrono").Range(Selection, Selection.End(xlDown))
il me génére mo graph mais me mets une erreur d'éxécution 438 : propriété ou méthode non gérée par cet objet.
MAis mon doc est kan meme bon si je fais fin sur le message d'erreur..
Y a til un moyen de ne plus avoi ce message
ActiveChart.SetSourceData Source:=Sheets("chrono").Range(Selection, Selection.End(xlDown))
il me génére mo graph mais me mets une erreur d'éxécution 438 : propriété ou méthode non gérée par cet objet.
MAis mon doc est kan meme bon si je fais fin sur le message d'erreur..
Y a til un moyen de ne plus avoi ce message
bonjour, je suis un peu novice en programmation sur excell ... je voudrais faire une ch'tite macro qui puisse prendre des valeurs sur différentes feuilles (colonnes B et F) et m'en faire un graphe (F en fonction de B)... Pour cela vu que je srcute environ 30000 (puis une extension à 60000) lignes par colonne il me faut apparemment faire plusieurs séries.
Mon premier reflexe a été de créer une nouvelle macro en faisant le travail "à la main " sur quelques feuilles...
Dans le programme il est écrit :
je voudrai savoir ce que cela signifie vu que jamais je n'utilise de cellule C14 ou C15 mais les colonnes B et F
(ma plage de donnée :
)
J'espère avoir été clair...
Mon premier reflexe a été de créer une nouvelle macro en faisant le travail "à la main " sur quelques feuilles...
Dans le programme il est écrit :
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Feuil1!C14"
ActiveChart.SeriesCollection(1).Values = "=Feuil1!C15"
je voudrai savoir ce que cela signifie vu que jamais je n'utilise de cellule C14 ou C15 mais les colonnes B et F
(ma plage de donnée :
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:B30001,F1:F30001"), _
PlotBy:=xlColumns
)
J'espère avoir été clair...
Ok j'ai recommencé ma macro en pensant que c'était effectivement une erreur de manip et que le "Feuil1!C14" c'était pour colonne 14 de la feuille 1 ... Je crois que c'était pas juste comme hypothèse ...
Ma macro donne en entier :
J'ai en effet 16 feuilles de données avec 60000 lignes (plus un titre par ligne) ...
Je voulais qu'il me trace toute les feuilles de données sur le même graphique .... (je suis pas sûr que ça marche ....
)
désolé pour la publication avec la balise code je me renseigne ...
[edit] je crois que j'ai pas bien capté le coup de la balise code désolé ....
Ma macro donne en entier :
Sub graphe3init()
'
' graphe2 Macro
' Macro enregistrée le 02/08/2006 par delache-jul
'
Dim i
'
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B2:B60001,F2:F60001"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Feuil1!C2"
ActiveChart.SeriesCollection(1).Values = "=Feuil1!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = "=Feuil2!C2"
ActiveChart.SeriesCollection(2).Values = "=Feuil2!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(3).XValues = "=Feuil3!C2"
ActiveChart.SeriesCollection(3).Values = "=Feuil3!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(4).XValues = "=Feuil4!C2"
ActiveChart.SeriesCollection(4).Values = "=Feuil4!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).XValues = "=Feuil5!C2"
ActiveChart.SeriesCollection(5).Values = "=Feuil5!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(6).XValues = "=Feuil6!C2"
ActiveChart.SeriesCollection(6).Values = "=Feuil6!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(7).XValues = "=Feuil7!C2"
ActiveChart.SeriesCollection(7).Values = "=Feuil7!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(8).XValues = "=Feuil8!C2"
ActiveChart.SeriesCollection(8).Values = "=Feuil8!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(9).XValues = "=Feuil9!C2"
ActiveChart.SeriesCollection(9).Values = "=Feuil9!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(10).XValues = "=Feuil10!C2"
ActiveChart.SeriesCollection(10).Values = "=Feuil10!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(11).XValues = "=Feuil11!C2"
ActiveChart.SeriesCollection(11).Values = "=Feuil11!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(12).XValues = "=Feuil12!C2"
ActiveChart.SeriesCollection(12).Values = "=Feuil12!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(13).XValues = "=Feuil13!C2"
ActiveChart.SeriesCollection(13).Values = "=Feuil13!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(14).XValues = "=Feuil14!C2"
ActiveChart.SeriesCollection(14).Values = "=Feuil14!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(15).XValues = "=Feuil15!C2"
ActiveChart.SeriesCollection(15).Values = "=Feuil15!C6"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(16).XValues = "=Feuil16!C2"
ActiveChart.SeriesCollection(16).Values = "=Feuil16!C6"
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph3init"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mbain"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "P pic EDE"
End With
End Sub
J'ai en effet 16 feuilles de données avec 60000 lignes (plus un titre par ligne) ...
Je voulais qu'il me trace toute les feuilles de données sur le même graphique .... (je suis pas sûr que ça marche ....
)désolé pour la publication avec la balise code je me renseigne ...
[edit] je crois que j'ai pas bien capté le coup de la balise code désolé ....
Dim c As Chart
Dim s As Series
Dim f As String
Dim i As Integer
Set c = Charts.Add
c.ChartType = xlXYScatter
c.SetSourceData Source:=Sheets("Feuil1").Cells(1, 1), PlotBy:=xlColumns
Do While c.SeriesCollection.Count > 0
c.SeriesCollection(1).Delete
Loop
For i = 1 To 16
Set s = c.SeriesCollection.NewSeries
f = "Feuil" & i
s.XValues = "=" & f & "!R2C2:R60001C2"
s.Values = "=" & f & "!R2C6:R60001C6"
Set s = Nothing
Next
Je ne sais pas pourquoi, il lui faut absolument définir Source [ligne 8]. Bah, on le vire [lignes 9-11].
On boucle 16 fois et on construit une nouvelle série pour chaque page.
Le nom des feuilles, c'est à toi de le gérer [ligne 15].
Enjoy !
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :

La balise fermante c'est [