Excel 2003 Ajout via VBA un bouton à un graphique

Le
harry
Bonjour,

J'ai écrit une application VBA qui, sur base d'un fichier de données,
génère dans un autre fichier les graphiques correspondant aux
données.
Je souhaiterais, lors de la création d'un graphique, y ajouter un
bouton (commandbutton).
Un aide serait la bienvenue car je n'ai aucune expérience dans l'ajout
d'un objet sur un objet en VBA

D'avance merci

Harry
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18518311
Pour ajouter un bouton issu de la barre des outils "Contrôle"
au dimension de la cellule G5 de l'onglet ayant le nom de "Feuil1"

Sub Ajouter_Un_Bouton()
With Worksheets("Feuil1")
.OLEObjects.Add ClassType:="Forms.CommandButton.1", _
Left:=.Range("G5").Left, Top:=.Range("G5").Top, _
Width:=.Range("G5").Width, Height:=.Range("G5").Height
End With
End Sub




"harry"
Bonjour,

J'ai écrit une application VBA qui, sur base d'un fichier de données,
génère dans un autre fichier les graphiques correspondant aux
données.
Je souhaiterais, lors de la création d'un graphique, y ajouter un
bouton (commandbutton).
Un aide serait la bienvenue car je n'ai aucune expérience dans l'ajout
d'un objet sur un objet en VBA

D'avance merci

Harry
harry
Le #18526901
Bonjour,
Merci pour l'information que je vais soigneusement conserver.
Le problème que je souhaite résoudre est l'ajout d'un bouton
formulaire dans un graphique.
Je poursuis mes recherches
Encore merci pour la réponse

Harry

On 29 jan, 03:01, "michdenis"
Pour ajouter un bouton issu de la barre des outils "Contrôle"
au dimension de la cellule G5 de l'onglet ayant le nom de "Feuil1"

Sub Ajouter_Un_Bouton()
With Worksheets("Feuil1")
    .OLEObjects.Add ClassType:="Forms.CommandButton.1", _
        Left:=.Range("G5").Left, Top:=.Range("G5").Top, _
        Width:=.Range("G5").Width, Height:=.Range("G5").Heigh t
End With
End Sub

"harry"
Bonjour,

J'ai écrit une application VBA qui, sur base d'un fichier de données,
génère dans un autre fichier les graphiques correspondant  aux
données.
Je souhaiterais, lors de la création d'un graphique, y ajouter un
bouton (commandbutton).
Un aide serait la bienvenue car je n'ai aucune expérience dans l'ajout
d'un objet sur un objet en VBA

D'avance merci

Harry


parci
Le #18553431
harry a écrit :
Bonjour,
Merci pour l'information que je vais soigneusement conserver.
Le problème que je souhaite résoudre est l'ajout d'un bouton
formulaire dans un graphique.
Je poursuis mes recherches
Encore merci pour la réponse



Tu devrais pouvoir le faire avec, par exemple :

' un bouton qui lance une sub "test" sur le premier graph du classeur
Sub AddButton()

Dim ch As Chart
Dim b As Button

Set ch = Charts(1)
Set b = ch.Buttons.Add(20, 20, 50, 20)
b.OnAction = "test"
Set b = Nothing
Set ch = Nothing

End Sub

Pas documenté mais fonctionne (sur une version antérieure à 2003 au moins).
michdenis
Le #18553871
| Set b = ch.Buttons.Add(20, 20, 50, 20)

Si tu regardes dans l'explorateur d'objets de la fenêtre de l'éditeur de code,
tu peux afficher les propriétés et méthodes des objets masqués par la
commande du menu contextuel (afficher les membres masqués)

Elle est effectivement présente et fonctionnelle mais elle fait référence
au modèle objet probablement Excel 1977. Elle est là pour assurer la
compatibilité des versions. Ce qui explique qu'on on ne retrouve pas
d'information sur ces membres masqués. La question : Devrait-on
continuer d'utiliser ces "items" dans nos nouveaux classeurs ?




"parci"
harry a écrit :
Bonjour,
Merci pour l'information que je vais soigneusement conserver.
Le problème que je souhaite résoudre est l'ajout d'un bouton
formulaire dans un graphique.
Je poursuis mes recherches
Encore merci pour la réponse



Tu devrais pouvoir le faire avec, par exemple :

' un bouton qui lance une sub "test" sur le premier graph du classeur
Sub AddButton()

Dim ch As Chart
Dim b As Button

Set ch = Charts(1)
Set b = ch.Buttons.Add(20, 20, 50, 20)
b.OnAction = "test"
Set b = Nothing
Set ch = Nothing

End Sub

Pas documenté mais fonctionne (sur une version antérieure à 2003 au moins).
Modeste
Le #18554091
Bonsour® michdenis
Elle fait référence
au modèle objet probablement Excel 1977. Elle est là pour assurer la
compatibilité des versions.



????
désolé mais le dinosaure que je suis, ne connais pas cette version ...
La première version d'Excel est sortie en 1985
mais je n'ai commencé à y toucher qu'en 1988 ;o)))
mais je manipulais Visicalc dès 1986...
http://www.bricklin.com/anonymous/VCdotcom
michdenis
Le #18554081
On s'entend pour 1997... Ok ?

"Modeste"
Bonsour® michdenis
Elle fait référence
au modèle objet probablement Excel 1977. Elle est là pour assurer la
compatibilité des versions.



????
désolé mais le dinosaure que je suis, ne connais pas cette version ...
La première version d'Excel est sortie en 1985
mais je n'ai commencé à y toucher qu'en 1988 ;o)))
mais je manipulais Visicalc dès 1986...
http://www.bricklin.com/anonymous/VCdotcom
parci
Le #18557671
On 1 fév, 22:21, "michdenis"
|  Set b = ch.Buttons.Add(20, 20, 50, 20)

Si tu regardes dans l'explorateur d'objets de la fenêtre de l'éditeur de code,
tu peux afficher les propriétés et méthodes des objets masqués pa r la
commande du menu contextuel (afficher les membres masqués)



Oui, non documenté.

Elle est effectivement présente et fonctionnelle mais elle fait réf érence
au modèle objet probablement Excel 1977. Elle est là pour assurer la
compatibilité des versions. Ce qui explique qu'on on ne retrouve pas
d'information sur ces membres masqués. La question : Devrait-on
continuer d'utiliser ces "items" dans nos nouveaux classeurs ?



Comment faire pour insérer un ActiveX sur une feuille graphique ?
J'ai pas 2003, mais avec 2007 ce n'est pas possible (OLEObjects.Add
échoue). Et manuellement, c'est inactif.
michdenis
Le #18559471
| Comment faire pour insérer un ActiveX sur une feuille graphique ?
| J'ai pas 2003, mais avec 2007 ce n'est pas possible (OLEObjects.Add
| échoue). Et manuellement, c'est inactif.

Première observation :
Lorsque l'on utilise l'enregistreur de macro pour ajouter un bouton
émanant de la boîte d'outils formulaire, le code renvoyé par
l'enregistreur macro utilise Buttons.add... ça donne quelque chose
comme :
ActiveSheet.Buttons.Add 912249.75, 988516.5, 1087682.25, 333898.5
Évidemment, il est "impossible" d'avoir de l'information de l'aide d'excel.
Ce fut une surprise ;-) même si tous savent que l'enregistreur de macro
ne génère pas le meilleur code disponible...

Voici je te propose une façon d'ajouter des contrôles dans un graphe :

'-------------------------------------------
Dim y As MsoAutoShapeType
y = msoShapeRound1Rectangle
Sheets("Graph1").Shapes.AddShape y, 50, 50, 100, 200
'-------------------------------------------
Pour connaître toute la collection des contrôles MsoAutoShapeType
il y a bien sûr l'explorateur d'objets... et on peut obtenir une liste
déroulante énumérant tous les items disponibles immédiatement
après avoir saisi le symbole "=" dans y = msoShapeRound1Rectangle

**********************************************
On peut ajouter aussi tous les contrôles de la boîte à outils formulaire
**********************************************
de cette manière :
Dim x As XlFormControl
x = xlButtonControl
Sheets("Graph1").Shapes.AddFormControl x, 50, 50, 50, 50
'--------------------------------------------------------
ET pour ceux qui voudrait avoir un exemple comment programmer un tel bouton
'--------------------------------------------------------
With Sheets("Graph1").Shapes
With .AddFormControl(x, 50, 50, 50, 50)
.Name = "Denis" 'définit sa propriéte Name
'Ce qui est inscrit sur le bouton
.OLEFormat.Object.Caption = "Denis"
'Affecte une macro "MaMacro" situé dans un module standard
.OLEFormat.Object.OnAction = "MaMacro"
'Définit les caractéristiques de la police utilisée sur le bouton.
With .OLEFormat.Object.Font
.Name = "Arial"
.Bold = True
.ColorIndex = 3
End With
End With
End With
'--------------------------------------------------------
Modeste
Le #18559421
Bonsour® michdenis
y = msoShapeRound1Rectangle



;o)))
juste pour le plaisir ;o)
msoshapebevel est plus beau !!!
rotf
michdenis
Le #18559691
| juste pour le plaisir ;o)
| msoshapebevel est plus beau !!!

Tu devrais pondre un fichier sur tes plus beaux boutons,
ça m'intéresse. ça me permettrait de raffiner les miens !

;-)
Publicité
Poster une réponse
Anonyme