Il me manque quelques formules pour agir sur un graphique

ToniConti

XLDnaute Junior
Bonjour à tous :)

Je suis en train de créer une fonction (macro) qui affiche un graphique sur base des données disponible sur une feuille exel.

Il me manque quelques commandes pour obtenir l'affichage que je souhaite.
Je solicite donc votre savoir en la matière :)

J'ai déja trouvé pas mal de fonction il me reste celles-ci :

donner un nom au graphique
le déplacer sur la droite
le déplacer vers le haut
Créer un second axe des x avec une autre échelle ^^

Merci à tous et bonne journée :)
 

Risleure

XLDnaute Occasionnel
Re : Il me manque quelques formules pour agir sur un graphique

Bonjour le Forum, ToniConti

Pour nommer

With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Nom du Graphique"
End With

Qu'entends-tu par déplacement à droite? Est-ce le déplacement du graphique sur la feuille ?

Dans ce cas
Shapes("graphique 1").Left = 10
Shapes("graphique 1").Top = 30
Ce sont les coordonnnées du coin en haut à gauche de "Graphique 1"

Pour le 2ème axe je ne sais pas.

@+
 

Risleure

XLDnaute Occasionnel
Re : Il me manque quelques formules pour agir sur un graphique

...
Par contre je ne sais pas comment utiliser
Shapes("graphique1").Top = 30
Ni à quoi correspond "graphique1"
Merci :)

Si tu n'as qu'un seul graphique tu peux juste indiquer le n° d'index
Voici 1 bout de code qui fait que le graphique se déplace en fonction de la cellule sur la quelle tu cliques. ActiveShape ne doit pas être utilisé si tu es dans la feuille.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Shapes(1).Left = Target.Offset(0, 2).Left
Shapes(1).Top = Target.Offset(1, 0).Top
End Sub
Si tu remplaces Target.Offset(0, 2).Left par 50, le coin en haut à gauche du graphique se placera à 50 pixels du bord gauche de ta feuille et Target.Offset(1, 0).Top par 80 .. à 80 pixels du haut
 

ToniConti

XLDnaute Junior
Re : Il me manque quelques formules pour agir sur un graphique

En fait j'utilise ceci comme technique :

Private Sub CommandButton1_Click()
ActiveSheet.Shapes.AddChart.Select
Shapes("1").Left = 10
Shapes("1").Top = 30
End Sub

Et ca marche ! :)

Un autre souci que je n'avais pas vu avant, c'est pour le nom d'une série.
J'aimerais qu'il prenne la valeur d'une cellule de la feuille mais en m'y prenant comme suit ca ne marche pas :

ActiveChart.SeriesCollection(2).Name = Range("D2")
 
Dernière édition:

Risleure

XLDnaute Occasionnel
Re : Il me manque quelques formules pour agir sur un graphique

Re,

Chez moi ton code ne fonctionen pas et je n'ai pas trop l'habitude de créer mes graphiques comme cela donc voici qqs commentaires.
Shapes("1"). il faut plutot écrire Shapes(1). sauf si tu as nommé ton graphique "1" mais c'est aller au devant de grosses confusions :D

Peut être un XLdien plus performant que moi pour prendre le relai ;)
 

ToniConti

XLDnaute Junior
Re : Il me manque quelques formules pour agir sur un graphique

alal lamentable erreur de ma part désolé :p

Tu as bien sûr raison c'est bien shapes(1). qui foncitonne :)

En cours de route je n'aurais pas du essayer de créer un graphique c'était inutile :)

Ce que je DOIS faire par contre c'est le mettre à jour au fur et à mesure qu'on entre des données dans la feuille de calcul.
(ca je sais faire)

Ce que j'ignore par contre c'est comment on sélectionne le graphique :confused:

Après ca devrait aller pour la suite :D
 

Gruick

XLDnaute Accro
Re : Il me manque quelques formules pour agir sur un graphique

Bonjour,

Pour le 2e axe, tu cliques sur la courbe dont l'axe manque, excel te propose "Format de la série de données"
Tu choisis "axe", "axe secondaire", et c'est fait.
en vba ça donne un truc du genre

ActiveChart.SeriesCollection(2).AxisGroup = 2

SeriesCollection(2) est un exemple, mais généralement c'est toujours elle qui nécessite un second axe.

A plus,
Gruick
 

ToniConti

XLDnaute Junior
Re : Il me manque quelques formules pour agir sur un graphique

Bon j'ai pas l'habitude d'être brouillon mais là je dois avouer que j'ai été un peu touffu :)

En fait je voulais simplement une macro qui mettrait à jour la plage de données du graphique :D

Le code suivant est opérationnel (pour ceux que ça intéresseraient :

ActiveSheet.Shapes(1).Select
ActiveChart.SeriesCollection(2).Values = "=Feuil1!$D$4:$D$" & nb + 3
ActiveChart.SeriesCollection(1).Values = "=Feuil1!$E$4:$E$" & nb + 3
ActiveChart.SeriesCollection(3).Values = "=Feuil1!$F$4:$F$" & nb + 3

Pour le second axe, je suis en train de regarder ça de près :) merci
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus