OVH Cloud OVH Cloud

Faire référence à un graphe incorporé

3 réponses
Avatar
Mirana
Salut!

Je voudrai cr=E9er plusieurs graphes incorpor=E9s dans une=20
feuille Excel. Comment faire r=E9f=E9rence =E0 un de ces graphe=20
pour pouvoir les distinguer et les manipuler en VB?

J'ai essay=E9:
Nom_Graphe=3DActivechart.Name
mais quand je fais:
ActiveSheet.Shapes(Nom_Graphe).ScaleWidth 1.01, _=20
msoFalse,msoScaleFromTopLeft

Ca ne marche pas!

Merci de me file un coup de main.

a+

Mirana

3 réponses

Avatar
Denis Michon
Bonjour Mirana,

'-------------------------------------
Dim C As Shape

With Worksheets("Feuil1")
Set C = .Shapes("Chart 1")
End With

With C
.ScaleWidth 1.01, msoFalse, msoScaleFromTopLeft
End With
'-------------------------------------


Une syntaxe alternative si tu préfères ceci :

With Worksheets("Feuil1").Shapes("Chart 1")
.ScaleWidth 1.01, msoFalse, msoScaleFromTopLeft
End With

.-------------------------------------


Si je peux me permettre une petite explication sur ton code :


Nom_Graphe¬tivechart.Name

ActiveSheet.Shapes(Nom_Graphe).....

Observe ces 2 lignes et tu vas t'apercevoir que tu fais référence à 2 types d'objets différents "Chart" et "Shape" .
Chaque type d'objet possède leurs propriétés et leurs méthodes. Dans l'aide, sous la rubrique Chart ou Shape, il y a
dans le haut de la fenêtre en bleu les mots "propriétés" et "méthodes". Si tu cliques dessus, une fenêtre t'affiche
toutes les méthodes ou propriétés de l'objet.

Dans le cas qui nous intéresse, à chaque fois que tu insères un objet dans la feuille, excel se charge de lui donner un
nom par défaut et ensuite il incrémente l'index à chaque ajout que tu fais du même objet. La subtilité ici , c'est bien
que nous soyons sûr que c'est le même objet, comme tu utilises des propretés d'objets différents, le nom renvoyé n'est
pas le même selon que tu utilises l'une ou l'autre de ces 2 méthodes et je te propose un petit exercice.

Supposons que tu ais seulement un objet dans ta feuille et que ce soit un graphique :

A ) sélectionne le graphique sur une feuille :

B ) Exécute ces lignes de code :

Nom_Graphe¬tivechart.Name 'Propriété de l'objet Chart
Nom_Shape = ActiveSheet.Shapes(1).Name 'Propriété de l'objet Shape


Résultat : NomGraphe <> NomShape

C'est pourquoi que tu ne peux utiliser "Nom_Graphe" dans ta ligne de code :
ActiveSheet.Shapes(Nom_Graphe).....



Salutations!



"Mirana" a écrit dans le message de news:067001c388c4$701e5730$
Salut!

Je voudrai créer plusieurs graphes incorporés dans une
feuille Excel. Comment faire référence à un de ces graphe
pour pouvoir les distinguer et les manipuler en VB?

J'ai essayé:
Nom_Graphe¬tivechart.Name
mais quand je fais:
ActiveSheet.Shapes(Nom_Graphe).ScaleWidth 1.01, _
msoFalse,msoScaleFromTopLeft

Ca ne marche pas!

Merci de me file un coup de main.

a+

Mirana
Avatar
Denis Michon
Bonjour Mirana,

'-------------------------------------
Dim C As Shape

With Worksheets("Feuil1")
Set C = .Shapes("Chart 1")
End With

With C
.ScaleWidth 1.01, msoFalse, msoScaleFromTopLeft
End With
'-------------------------------------


Une syntaxe alternative si tu préfères ceci :

With Worksheets("Feuil1").Shapes("Chart 1")
.ScaleWidth 1.01, msoFalse, msoScaleFromTopLeft
End With

.-------------------------------------


Si je peux me permettre une petite explication sur ton code :


Nom_Graphe¬tivechart.Name

ActiveSheet.Shapes(Nom_Graphe).....

Observe ces 2 lignes et tu vas t'apercevoir que tu fais référence à 2 types d'objets différents "Chart" et "Shape" .
Chaque type d'objet possède leurs propriétés et leurs méthodes. Dans l'aide, sous la rubrique Chart ou Shape, il y a
dans le haut de la fenêtre en bleu les mots "propriétés" et "méthodes". Si tu cliques dessus, une fenêtre t'affiche
toutes les méthodes ou propriétés de l'objet.

Dans le cas qui nous intéresse, à chaque fois que tu insères un objet dans la feuille, excel se charge de lui donner un
nom par défaut. Ensuite il incrémente l'index à chaque ajout du même objet. La subtilité ici , c'est bien que tu sois
sûr que c'est le même objet qui est référencié, Excel utilise à l'interne pour chaque type d'objet un qualificatif
différent. Comme tes 2 lignes de code réfère a des objets différents "Chart" et "Shape", le nom par défaut à chaque type
d'objet renvoyé n'est pas le même. C'est pourquoi que tu ne peux pas utiliser "Nom_Graphe" qui fait référence à l'objet
"Chart" dans ta ligne de code suivante qui elle fait référence à l'objet "Shape". ActiveSheet.Shapes(Nom_Graphe).....

Tu veux faire un petit test :

Supposons que tu ais seulement un objet dans ta feuille et que ce soit un graphique :

A ) sélectionne le graphique de la feuille :

B ) Exécute ces lignes de code :

Nom_Graphe¬tivechart.Name 'Propriété de l'objet Chart
Nom_Shape = ActiveSheet.Shapes(1).Name 'Propriété de l'objet Shape

Résultat : NomGraphe <> NomShape


Salutations!



"Mirana" a écrit dans le message de news:067001c388c4$701e5730$
Salut!

Je voudrai créer plusieurs graphes incorporés dans une
feuille Excel. Comment faire référence à un de ces graphe
pour pouvoir les distinguer et les manipuler en VB?

J'ai essayé:
Nom_Graphe¬tivechart.Name
mais quand je fais:
ActiveSheet.Shapes(Nom_Graphe).ScaleWidth 1.01, _
msoFalse,msoScaleFromTopLeft

Ca ne marche pas!

Merci de me file un coup de main.

a+

Mirana
Avatar
Alain CROS
Bonjour.

Si tu veux utiliser ActiveChart.Name, essaye comme ça.

Sub test()
Dim LeNom$
LeNom = ActiveChart.Name
LeNom = Right$(LeNom, Len(LeNom) - Len(ActiveSheet.Name) -
1)
ActiveSheet.Shapes(LeNom).ScaleWidth 1.01, msoFalse,
msoScaleFromTopLeft
End Sub

Attention au coupure de ligne.
Ceci fonctionne sur XL97.

Alain CROS.

-----Message d'origine-----
Salut!

Je voudrai créer plusieurs graphes incorporés dans une
feuille Excel. Comment faire référence à un de ces graphe
pour pouvoir les distinguer et les manipuler en VB?

J'ai essayé:
Nom_Graphe¬tivechart.Name
mais quand je fais:
ActiveSheet.Shapes(Nom_Graphe).ScaleWidth 1.01, _
msoFalse,msoScaleFromTopLeft

Ca ne marche pas!

Merci de me file un coup de main.

a+

Mirana
.