plage de données variable dans graphe

  • Initiateur de la discussion Hervé
  • Date de début
H

Hervé

Guest
Salut à tous,

je souhaite créer un graphe par macro, à partir de plage de données variables, voici le code que j'utilise:



'Création des plages de données

Sheets('Feuil1').Select

'Abscisse
Range('B2').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'journée_en_abscisse'

'Séries
'Charge actuelle
Range('B3').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'Charge_actuelle'

'Charge planifiée
Range('B4').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'Charge_planifiée'



'Création de graphique
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets('Feuil1').Range('B2')
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = '(journée_en_abscisse)'
ActiveChart.SeriesCollection(1).Values = '=(Charge_actuelle)'
ActiveChart.SeriesCollection(1).Name = '=''Charge actuelle'''
ActiveChart.SeriesCollection(2).XValues = '(journée_en_abscisse)'
ActiveChart.SeriesCollection(2).Values = '=(Charge_planifiée)'
ActiveChart.SeriesCollection(2).Name = '=''Charge planifiée'''
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = 'Résultats R9, du 31/01 au 25/02'
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False



(il est tres certainement pollué, mais n'etant pas encore tres doué pour le code, j'enregistre mes macros)

Ce code me semblait bon, mais excel n'en veut pas, l'erreur viendrait de la ligne

ActiveChart.SeriesCollection(1).Values = '=(Charge_actuelle)'

(il doit y avoir d'autres erreurs), est-ce que qqun pourrait m'aider à trouver mon erreur? j'ai l'impression de tourner en rond...


Merci beaucoup,

Hervé.
 
H

Hervé

Guest
Re-bonjour tout le monde, mon code précédent ne voulant décidément pas marcher, j'ai essayé avec un truc de ce type:

Range('B2').Select
Range(Selection, Selection.End(xlToRight)).Select
Range('B2:p2,B3').Select
Range('B3').Activate
Range(Selection, Selection.End(xlToRight)).Select
Range('B2:p2,B3:p3,B4').Select
Range('B4').Activate
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'plage_de_donnée'


Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets(Feuil1).Range(plage_de_donnée), _
PlotBy:=xlRows
ActiveChart.SeriesCollection(3).Delete
ActiveChart.SeriesCollection(2).Name = '=''test'''
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False




(au-dessus je sélectionne une plage de donnée sur plusieurs lignes qui peuvent être séparées), et après plouf plouf je mélange... je mets tout ca ds le code, et paf!
marche pas...
j'ai beau tourner et retourner le code...pas de solutions... d'autant plus que je n'ai pas l'aide vba...(cf autre fil, rien à voir...)
qqun voit-il où se situe l'erreur?

merci pour tout


Hervé
 

JeanMarie

XLDnaute Barbatruc
Bonjour Hervé

Je ne vais pas te répondre sur le problme de ta macro,j'en serais incapable, mais t'aiguiller sur une autre voie que la création d'un graphe par VBA, mais plus sur l'actualisation de la plage des cellules par formule.
Voici un lien sur un fil
Lien supprimé
Si tu as besoin d'aide pour adapter cette solution, place ton fichier sur le forum.

@+Jean-Marie
 

MichelXld

XLDnaute Barbatruc
bonjour Hervé , bonjour Jean-Marie

je n'ai pas testé la totalité de la procedure , mais pour la ligne qui te pose soucis tu peux tester

ActiveChart.SeriesCollection(1).Values = Range('Charge_actuelle')


idem pour la ligne

ActiveChart.SeriesCollection(2).Values = Range('Charge_planifiée')


bon apres midi
MichelXld
 
H

Hervé

Guest
en fait, j'ai trouvé une parade, ca donne ca, et ca marche...

Sub creation_graphe()
'
' creation_graphe Macro
' Macro enregistrée le 21/03/2005 par STAGIAIRE-NSP
'


'Création des plages de données Série

Sheets('Feuil1').Select

'Abscisse
Range('B2').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'journée_en_abscisse'

'Séries
'Charge actuelle
Range('B3').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'Charge_actuelle'

'Charge planifiée
Range('B4').Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = 'Charge_planifiée'


'Création de la plage de données du graphe

Range('journée_en_abscisse,Charge_actuelle,Charge_planifiée').Select
Selection.CurrentRegion.Select
Selection.Name = 'plage_de_donnée'

'Création du graphe

Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Range('plage_de_donnée'), PlotBy:=xlRows
ActiveChart.SeriesCollection(2).Name = '=''test'''
ActiveChart.Location Where:=xlLocationAsObject, Name:='Feuil1'
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False




End Sub


merci à tous...
 

Discussions similaires

Statistiques des forums

Discussions
312 434
Messages
2 088 380
Membres
103 838
dernier inscrit
noureddine