Axe x dynamique sur historigramme
PelurDeGrz
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
PelurDeGrz Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
PelurDeGrz Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous, les patients qui sauront me renseigner.
Pour commencer je suis une bille en VBA ça fait trois jours que j'en fais, car je dois réaliser des macros assez complètes.
Je souhaite réaliser un histogramme dont les valeurs en y ainsi qu'en x varie de manières dynamique.
J'ai déjà pu bien améliorer des partie de mon code grâce à la lecture de tuto/forum mais là je sèche...
Pour la sélection dynamique sur l'axe y pas de soucis j'ai trouvé (voir à la fin), mais pour l'axe x je bloque.
J'ai bricolé une solution mais elle ne me plaît pas, car pas du tout esthétique, la voici:
Function plot_hist(nb_colonne)
'Plot les graphes à l'écran
'Afin de rendre les graphiques dynamique, cette condition permet de choisir un nombre de colonne au graphique ainsi que les valeurs indiquée sur l'axe x
If nb_colonne = 5 Then
'graphique
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = "=""Répartition mesure sur l'axe x"""
ActiveChart.FullSeriesCollection(1).Values = "=Graphique!$J$2:$J$6"
ActiveChart.FullSeriesCollection(1).XValues = "=Graphique!$I$2:$I$6"
ActiveSheet.ChartObjects(1).Left = Range("P10").Left
ActiveSheet.ChartObjects(1).Top = Range("P10").Top
ElseIf nb_colonne = 15 Then
'graphique
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""Répartition mesure sur l'axe x"""
ActiveChart.SeriesCollection(1).Values = "=Graphique!$J$2:$J$16"
ActiveChart.SeriesCollection(1).XValues = "=Graphique!$I$2:$I$16"
ActiveSheet.ChartObjects(1).Left = Range("P10").Left
ActiveSheet.ChartObjects(1).Top = Range("P10").Top
Ainsi de suite pour un maximum de possibilité
Puis j'ai trouver comment rendre l'axe y dynamique d'une façon plus jolie
nb_colonne = nb_colonne + 1
ActiveChart.SetSourceData Source:=Sheets("Mesure").Range("J2:J" & nb_colonne)
Mais je trouve pas comment faire quelque chose d'identique pour le XValues
Voilà J'espère avoir été clair dans la difficulté que je rencontre.
Je rappel que je suis pas un expert en programmation et que peut-être des choses basique m'échappe dans ce langage.
En tout les cas je vous remercie d'avance pour vos réponses.
Salutations à tous
PelurDeGrz
Pour commencer je suis une bille en VBA ça fait trois jours que j'en fais, car je dois réaliser des macros assez complètes.
Je souhaite réaliser un histogramme dont les valeurs en y ainsi qu'en x varie de manières dynamique.
J'ai déjà pu bien améliorer des partie de mon code grâce à la lecture de tuto/forum mais là je sèche...
Pour la sélection dynamique sur l'axe y pas de soucis j'ai trouvé (voir à la fin), mais pour l'axe x je bloque.
J'ai bricolé une solution mais elle ne me plaît pas, car pas du tout esthétique, la voici:
Function plot_hist(nb_colonne)
'Plot les graphes à l'écran
'Afin de rendre les graphiques dynamique, cette condition permet de choisir un nombre de colonne au graphique ainsi que les valeurs indiquée sur l'axe x
If nb_colonne = 5 Then
'graphique
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(1).Name = "=""Répartition mesure sur l'axe x"""
ActiveChart.FullSeriesCollection(1).Values = "=Graphique!$J$2:$J$6"
ActiveChart.FullSeriesCollection(1).XValues = "=Graphique!$I$2:$I$6"
ActiveSheet.ChartObjects(1).Left = Range("P10").Left
ActiveSheet.ChartObjects(1).Top = Range("P10").Top
ElseIf nb_colonne = 15 Then
'graphique
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""Répartition mesure sur l'axe x"""
ActiveChart.SeriesCollection(1).Values = "=Graphique!$J$2:$J$16"
ActiveChart.SeriesCollection(1).XValues = "=Graphique!$I$2:$I$16"
ActiveSheet.ChartObjects(1).Left = Range("P10").Left
ActiveSheet.ChartObjects(1).Top = Range("P10").Top
Ainsi de suite pour un maximum de possibilité
Puis j'ai trouver comment rendre l'axe y dynamique d'une façon plus jolie
nb_colonne = nb_colonne + 1
ActiveChart.SetSourceData Source:=Sheets("Mesure").Range("J2:J" & nb_colonne)
Mais je trouve pas comment faire quelque chose d'identique pour le XValues
Voilà J'espère avoir été clair dans la difficulté que je rencontre.
Je rappel que je suis pas un expert en programmation et que peut-être des choses basique m'échappe dans ce langage.
En tout les cas je vous remercie d'avance pour vos réponses.
Salutations à tous
PelurDeGrz
Merci pour ta réponse.
Oui j'ai besoin d'une macro, tu le verra mieux une fois le fichier Excel téléchargé.
J'ai essayé de commenter au mieux le code mais je reste dispo pour tout complément d'infos.
Merci d'avance pour ton aide.
http://www.cjoint.com/c/EGchYkHvXO5
Voilà après avoir posté ma réponse j'ai eu une illumination hasardeuse.
Je comprend pas encore très bien la "grammaire" de ce langage, mais en essayant à tâton j'ai trouvé quelque chose qui fonctionne assez bien et qui me convient pleinement.
Si malgré tout tu souhaite regarder le code pour me proposer quelque chose libre à toi sinon pour moi c'est tout bon ça fonctionne.
Merci :)