associé un nouveau marco a un nouveau bouton

  • Initiateur de la discussion Xavier
  • Date de début
X

Xavier

Guest
Bonjour,

Voici une question qui me parait pas si inoccente.

Peut on associer un nouveau marco a un nouveau bouton ???

Explication:

J'ai un programme qui crée deux nouveaux boutons et un combobox sur une nouvelle feuille. Maintenant j'aimerai simplement associer un nouveau macro (qui normelement s'écrait dans la feuille séléctionner du nouveau fichier) ... simple non ?

Merci bcp pour votre réponse, elle sera traitée avec le plus grand intéret ;)

Xa
 
M

michel

Guest
bonjour Xavier

tu peux essayer :

Sub CreationCommandButtonEtMacroAssociée()
Dim oOLE As OLEObject
Dim X As Byte
Dim Code As String
Dim NextLine As String

Set oOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=340, Top:=30, Width:=100, Height:=30)
'Left position bouton par rapport au bord gauche de la feuille
'Top position bouton par rapport au haut de la feuille
'Width largeur bouton
'Height hauteur bouton

X = ActiveSheet.OLEObjects.Count 'compter le nombre de boutons existants dans la feuille

'option nommer l'objet
oOLE.Name = "CommandButton" & X
'texte sur le bouton
ActiveSheet.OLEObjects(X).Object.Caption = "Le Forum XLD " & X

Code = "Sub CommandButton" & X & "_Click()" & vbCrLf
Code = Code & "Msgbox ""Bonjour le forum XLD""" & vbCrLf
Code = Code & "End Sub"

With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

End Sub

j'en profite pour recaser la macro qui ne t'a pas servi ce matin …;o)


bonne soiree
MichelXld
 
X

Xavier

Guest
Rebonjour,

Je viens de passer quelques instants dessus .... et je comprends ca fonctionne avec une opération aussi simple mais j'aimerais y incorporer un pivotchart. Donc je me demandais si je ne pouvais pas avec l'aide de mon bouton lancer une procédure qui contient elle la fonction pivotchart ????

Merci bcp
 
M

michel

Guest
bonjour Xavier

pour appeler une macro existante tu peux essayer par exemple

...
Code = "Sub CommandButton" & X & "_Click()" & vbCrLf
Code = Code & "Call MaMacroPivotChart" & vbCrLf
Code = Code & "End Sub"
...

Sub MaMacroPivotChart()
.....
End Sub



bon week end
MichelXld
 
X

Xavier

Guest
Bonjour,

Je suis occupé à transposer la programmation à mon problème. J'ai déjà réussi à faire un test sur un fichier vide et tout se passe sans aucun probleme ... jusqu'au moment ou j'intercale mes lignes dans mon Userform

Le problème concerne cette ligne

With ThisWorkbook.VBProject.VBComponent_ (ActiveSheet.Name).CodeModule

NextLine = .CountOfLines + 1
.InsertLines NextLine, Code
End With

Ceci ne m'étonne pas vu qu'on y parle de Workbook... Connaissez vous l'équivalent pour un Userform ?

Merci bcp et bonne journée
Xa
 
M

michel

Guest
bonsoir Xavier

je ne comprend pas ce que tu souhaites faire :

1.Lancer la procedure depuis un Userform ?
je viens de retester chez moi et la procedure fonctionne avec un simple Copier/Coller

sinon dans ton message il y a une erreur de synthaxe ( qui n'a peut etre rien à voir ) :
remplace
With ThisWorkbook.VBProject.VBComponent_ (ActiveSheet.Name).CodeModule
par
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule

Si le bouton est créé dans un autre classeur il faut plutot écrire :
With ActiveWorkbook ....
ou
WorkBooks("monfichier.xls")....
ThisWorkbook définit le classeur contenant la macro d'origine


2. Créer une macro dans un userform , par macro?
dans ce cas tu peux essayer
With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule


bonne soiree
MichelXld
 
X

Xavier

Guest
Bonjour,

Tout d'abord je tiens à m'excuser parce que je vois que j'ai deux postes traitant du meme sujet malgré et je tiens à le souligner que ce n'était pas le but vu que dans le second poste je voulais développer une autre idée mais on m'a proposé la meme programmation ...

Ensuite, la programmation comme expliquée au premier point marche sans probleme pour autant que je place ma macro d'origine sur une simple feuille ... or dans mon cas ce n'est pas ce que je recherche.

Je part d'un userform qui a un moment donné créer un nouveau fichier, avec de nouvelles feuilles. Sur chacune d'entre elles, j'aimerais y introduire deux boutons qui eux meme renvoient à une macro.

Pour le second point, mon point de départ est l'userform qui contient les lignes de code qui devraient etre assignées à mon bouton.

Xa


ps:encore mille excuses pour le double postes
 
M

michel

Guest
bonsoir Xavier

tu peux tester le fichier joint

par contre je te conseille de relire le message de Zon dans l'autre fil de discussion car il t'a donné la solution , et en lisant ta réponse j'ai l'impression que tu n'en as pas tenu compte :

ce n'est pas
With ActiveWorkbook.VBProject.VBComponents(NewSheet.Name).CodeModule
mais
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule


bonne soiree
MichelXld
 

Pièces jointes

  • Creer_Classeur_Bouton_Et_Macro.zip
    10 KB · Affichages: 237
Dernière modification par un modérateur:
X

xavier

Guest
Bonjour Michel,


Merci bcp pour l'exemple, j'ai su y jeter un coup d'oeil hier et je crois que c'était dans la lignée de ce que je recherche mais j'ai un problème aujourd'hui je n'arrive pas à enregister ton exemple ... peux tu me l'envoyer sur ma boite mail, svp?

Merci bcp
Xa
 

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes