Créer un bouton par macro et lui affecter une macro

Bonjour le forum,

Malgré les informations que j'ai pu trouver sur différents posts, je bloque toujours sur mon problème.

Lors de la validation d'un bouton en page principale, je créé un nouvel onglet dans Excel.

Sur ce nouvel onglet je créé un bouton grâce à une macro. Jusque là pas de souci.

Je veux ensuite associer une macro à ce bouton pour qu'au clic sur celui-ci, le fichier revienne sur l'onglet Accueil.

C'est cette dernière étape qui me pose problème. Ci-joint mon code :

'Création de boutons d'action sur la feuille

'Création du bouton de retour à la page d'accueil

With ActiveSheet

LargeurBouton = Columns(5).Width * 2

GaucheBouton = Columns(5).Left

HauteurBouton = Rows(5).Height * 2

SommetBouton = Rows(4).Top

End With

Set oOLE = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _

Left:=GaucheBouton, Top:=SommetBouton, Width:=LargeurBouton, Height:=HauteurBouton)

oOLE.Name = "CommandButton1"

ActiveSheet.OLEObjects(1).Object.Caption = "Retour"

Code = "Sub Retour" & "_Click()" & vbCrLf

Code = Code & "Sheets(""Accueil"").active" & vbCrLf

Code = Code & "End Sub"

Le clic du bouton "Retour" n'engendre aucune action dans Excel...

Merci d'avance pour la lecture de ce post et une éventuelle aide

Très cordialement,

Hellyeah

bonjour

si ta feuille créee est la copy d'un modele type ; sur ce modele tu fais ton bouton ; tu lui affecte la macro retour ; ainsi a chaque ajout ,tout est pret plus besoin de creer un bouton a chque creation

cordialement

Bonjour tulipe_3

Malheureusement, cet onglet n'est pas la copie d'un onglet existant, sachant que les informations qui y seront saisies sont dépendantes d'une multitude de critères provenant d'autres onglet.

N'existe t-il pas une méthode permettant de réaliser mon besoin en toutes circonstances ?

Merci de ta réponse ,

Hellyeah

-- 25 Jan 2011, 17:54 --

J'ai trouvé une réponse qui marche à un détail près, mais qui ne devrait pas vous gêner :

'Création de boutons d'action sur la feuille

'Création du bouton de retour à la page d'accueil

With ActiveSheet

LargeurBouton = Columns(5).Width * 2

GaucheBouton = Columns(5).Left

HauteurBouton = Rows(5).Height * 2

SommetBouton = Rows(4).Top

End With

Set oOLE = ActiveWorkbook.ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=GaucheBouton, Top:=SommetBouton, Width:=LargeurBouton, Height:=HauteurBouton)

oOLE.Name = "CommandButton1"

ActiveSheet.OLEObjects(1).Object.Caption = "Retour"

Code = "Sub CommandButton1" & "_Click()" & vbCrLf

Code = Code & "Sheets(""Accueil"").active" & vbCrLf

Code = Code & "End Sub"

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule

NextLine = .CountOfLines + 1

.insertlines NextLine, Code

End With

Pour utiliser la ligne ActiveWorkbook.VBProject.VBComponents, il est nécessaire d'activer la référence Visual Basic for Applications Extensibility dans Outils>Références.

Mon seul souci résiduel reste que quand je nomme un onglet par la méthode

Activesheet.Name = "Exemple"

Dans VB l'onglet se nomme FeuilXX("Exemple") alors que j'aimerais qu'il soit sous forme Exemple("Exemple").

Sauriez-vous comment faire ?

Merci d'avance

Hellyeah

Bonsoir,

Pour bien comprendre ta demande.

Tu veux créer un bouton sur ta feuille et lui attribuer une macro à exécuter puis renommer la feuille (onglet et en dans VBA) sur laquelle se trouve le bouton ?

A te relire

re

je cite

" Malheureusement, cet onglet n'est pas la copie d'un onglet existant, sachant que les informations qui y seront saisies sont dépendantes d'une multitude de critères provenant d'autres onglet."

ne serait -ce pas un tabeau vierge ?

Re-bonjour tulipe_3 et Dan,

Merci de vous pencher sur mon cas

Effectivement, la création du nouvel onglet va saisir un ensemble d'informations et les mettre en forme à partir d'une feuille vierge.

Les informations et la mise en forme sont dépendantes des informations précédemment saisies sur l'onglet "Menu" de départ. Je ne peux donc, dans ce cas, partir d'un onglet pré-formaté et procéder par copie.

Amicalement,

Hellyeah

-- 26 Jan 2011, 10:17 --

Re,

Suite aux indications qui m'ont été données, voici pour info le bout de code qui résout mon problème :

'Récupération du (name) VB de l'onglet créé

X = ActiveSheet.CodeName

'Création de boutons d'action sur la feuille

'Création du bouton de retour à la page d'accueil

With ActiveSheet

LargeurBouton = Columns(5).Width * 2

GaucheBouton = Columns(5).Left

HauteurBouton = Rows(5).Height * 2

SommetBouton = Rows(4).Top

End With

Set oOLE = ActiveWorkbook.ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=GaucheBouton, Top:=SommetBouton, Width:=LargeurBouton, Height:=HauteurBouton)

oOLE.Name = "CommandButton1"

ActiveSheet.OLEObjects(1).Object.Caption = "Retour"

Code = "Sub CommandButton1" & "_Click()" & vbCrLf

Code = Code & "Sheets(""Accueil"").activate" & vbCrLf

Code = Code & "End Sub"

With ActiveWorkbook.VBProject.VBComponents(X).CodeModule

NextLine = .CountOfLines + 1

.insertlines NextLine, Code

End With

Encore merci,

Hellyeah

Edit Dan : Fil cloturé sur le post précédent.

Rechercher des sujets similaires à "creer bouton macro affecter"