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.