Se connecter avec
S'enregistrer | Connectez-vous

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


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

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 :
  1. ActiveChart.SeriesCollection.NewSeries
  2.  
  3. ActiveChart.SeriesCollection(1).XValues = "=Feuil1!C14"
  4. 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 :
  1. Charts.Add
  2. ActiveChart.ChartType = xlXYScatter
  3. ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:B30001,F1:F30001"), _
  4. PlotBy:=xlColumns

)
J'espère avoir été clair...
Expert Programmation

Ton premier reflexe aurait du être d'aller lire les règles de publication dans la catégorie Programmation, en particulier la partie concernant le bon usage de la balise CODE.

Il est encore temps....
Expert Programmation

Plus je regarde ton truc et moins je le comprends. Tu peux publier toute ta macro que je puisse reproduire ?
Pour l'instant, je suspecte l'enregistrement d'une manip involontaire.

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 :
  1. Sub graphe3init()
  2. '
  3. ' graphe2 Macro
  4. ' Macro enregistrée le 02/08/2006 par delache-jul
  5. '
  6. Dim i
  7. '
  8. Charts.Add
  9. ActiveChart.ChartType = xlXYScatter
  10. ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B2:B60001,F2:F60001"), _
  11. PlotBy:=xlColumns
  12.  
  13. ActiveChart.SeriesCollection.NewSeries
  14.  
  15. ActiveChart.SeriesCollection(1).XValues = "=Feuil1!C2"
  16. ActiveChart.SeriesCollection(1).Values = "=Feuil1!C6"
  17. ActiveChart.SeriesCollection.NewSeries
  18. ActiveChart.SeriesCollection(2).XValues = "=Feuil2!C2"
  19. ActiveChart.SeriesCollection(2).Values = "=Feuil2!C6"
  20. ActiveChart.SeriesCollection.NewSeries
  21. ActiveChart.SeriesCollection(3).XValues = "=Feuil3!C2"
  22. ActiveChart.SeriesCollection(3).Values = "=Feuil3!C6"
  23. ActiveChart.SeriesCollection.NewSeries
  24. ActiveChart.SeriesCollection(4).XValues = "=Feuil4!C2"
  25. ActiveChart.SeriesCollection(4).Values = "=Feuil4!C6"
  26. ActiveChart.SeriesCollection.NewSeries
  27. ActiveChart.SeriesCollection(5).XValues = "=Feuil5!C2"
  28. ActiveChart.SeriesCollection(5).Values = "=Feuil5!C6"
  29. ActiveChart.SeriesCollection.NewSeries
  30. ActiveChart.SeriesCollection(6).XValues = "=Feuil6!C2"
  31. ActiveChart.SeriesCollection(6).Values = "=Feuil6!C6"
  32. ActiveChart.SeriesCollection.NewSeries
  33. ActiveChart.SeriesCollection(7).XValues = "=Feuil7!C2"
  34. ActiveChart.SeriesCollection(7).Values = "=Feuil7!C6"
  35. ActiveChart.SeriesCollection.NewSeries
  36. ActiveChart.SeriesCollection(8).XValues = "=Feuil8!C2"
  37. ActiveChart.SeriesCollection(8).Values = "=Feuil8!C6"
  38. ActiveChart.SeriesCollection.NewSeries
  39. ActiveChart.SeriesCollection(9).XValues = "=Feuil9!C2"
  40. ActiveChart.SeriesCollection(9).Values = "=Feuil9!C6"
  41. ActiveChart.SeriesCollection.NewSeries
  42. ActiveChart.SeriesCollection(10).XValues = "=Feuil10!C2"
  43. ActiveChart.SeriesCollection(10).Values = "=Feuil10!C6"
  44. ActiveChart.SeriesCollection.NewSeries
  45. ActiveChart.SeriesCollection(11).XValues = "=Feuil11!C2"
  46. ActiveChart.SeriesCollection(11).Values = "=Feuil11!C6"
  47. ActiveChart.SeriesCollection.NewSeries
  48. ActiveChart.SeriesCollection(12).XValues = "=Feuil12!C2"
  49. ActiveChart.SeriesCollection(12).Values = "=Feuil12!C6"
  50. ActiveChart.SeriesCollection.NewSeries
  51. ActiveChart.SeriesCollection(13).XValues = "=Feuil13!C2"
  52. ActiveChart.SeriesCollection(13).Values = "=Feuil13!C6"
  53. ActiveChart.SeriesCollection.NewSeries
  54. ActiveChart.SeriesCollection(14).XValues = "=Feuil14!C2"
  55. ActiveChart.SeriesCollection(14).Values = "=Feuil14!C6"
  56. ActiveChart.SeriesCollection.NewSeries
  57. ActiveChart.SeriesCollection(15).XValues = "=Feuil15!C2"
  58. ActiveChart.SeriesCollection(15).Values = "=Feuil15!C6"
  59. ActiveChart.SeriesCollection.NewSeries
  60. ActiveChart.SeriesCollection(16).XValues = "=Feuil16!C2"
  61. ActiveChart.SeriesCollection(16).Values = "=Feuil16!C6"
  62.  
  63. ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph3init"
  64.  
  65. With ActiveChart
  66. .HasTitle = False
  67. .Axes(xlCategory, xlPrimary).HasTitle = True
  68. .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mbain"
  69. .Axes(xlValue, xlPrimary).HasTitle = True
  70. .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "P pic EDE"
  71. End With
  72. 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é ....
Expert Programmation

  1. Dim c As Chart
  2. Dim s As Series
  3. Dim f As String
  4. Dim i As Integer
  5.  
  6. Set c = Charts.Add
  7. c.ChartType = xlXYScatter
  8. c.SetSourceData Source:=Sheets("Feuil1").Cells(1, 1), PlotBy:=xlColumns
  9. Do While c.SeriesCollection.Count > 0
  10. c.SeriesCollection(1).Delete
  11. Loop
  12.  
  13. For i = 1 To 16
  14. Set s = c.SeriesCollection.NewSeries
  15. f = "Feuil" & i
  16. s.XValues = "=" & f & "!R2C2:R60001C2"
  17. s.Values = "=" & f & "!R2C6:R60001C6"
  18. Set s = Nothing
  19. 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