Ajout dynamique de bouton dans une feuille excel

WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008 - 26 mai 2008 à 15:54
WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008 - 27 mai 2008 à 08:25
Bonjour,

Je mets actuellement en place une macro excel qui traite un fichier .txt et le met en forme dans une feuille excel. Jusqu'ici, pas de problème. Je voudrais aussi ajouter automatiquement à côté de ce tableau, deux boutons qui permettront aux utilisateurs de faire des actions particulières sur le tableau une fois celui-ci modifié.

Mon souci se situe à ce niveau:
  -> comment ajouter un bouton dans une feuille via une macro ?
  -> comment associer du code VBA (que je placerais en dur dans la macro d'origine) à ces boutons ?

J'ai essayé de voir ce que donnait l'enregistreur de macro quand on le fait "à la main" (ajouter les boutons), mais un copier/coller me donne ensuite une erreur 1004 lors de l'exécution

Merci d'avance

1 réponse

WedgeAnt Messages postés 13 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 27 mai 2008
27 mai 2008 à 08:25
Re-bonjour,

Quelques suites à mon problème:
J'ai réussi à ajouter dynamiquement des boutons via OLEObjects.Add("Forms.CommandButton.1" ...).
J'ai trouvé une solution qui normalement devrait fonctionner pour ajouter le code correspondant à l'action "Click()" via VBProject.VBComponents.Add().CodeModule.InsertLines mais il doit y avoir quelque chose qui ne fonctionne pas correctement car le fait de cliquer sur le bouton par la suite ne fait rien du tout.

Voila le code que j'ai écrit (le workbook "recap" a été rempli de manière automatique en parsant un fichier texte):

Dim bouton_ext As OLEObject
Dim bouton_lst As OLEObject
Dim recap As Workbook

[...]

recap.Sheets(1).Activate
Set bouton_ext = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=700, Top:=50, Width:=150, Height:=50)
Set bouton_lst = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=700, Top:=125, Width:=150, Height:=50)
bouton_ext.Name = "bouton_ext"
bouton_lst.Name = "bouton_lst"
bouton_ext.Object.Caption = "Bouton extraction"
bouton_lst.Object.Caption = "Bouton listage"
       
code_ext = "Sub CommandButton1_Click()" & vbCrLf & "    MsgBox(""Hello"")" & vbCrLf & "End Sub"
recap.VBProject.VBComponents.Add(1).CodeModule.InsertLines 1, code_ext

Merci d'avance
0
Rejoignez-nous