plage de données variable dans graphe

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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é.
 
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😛2,B3').Select
Range('B3').Activate
Range(Selection, Selection.End(xlToRight)).Select
Range('B2😛2,B3😛3,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é
 
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
 
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
 
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...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour