Comment dupliquer un bouton et son code dans VB
Bonjour à tous,
Je souhaite copier un bouton de commande de Feuil1 vers Feuil2 tout en gardant le code attaché au bouton (CommandButton1) qui exécute une macro nommé (Statistique).
En utilisant le code suivant je réalise bien la copie de bouton mais il ne copie pas son code, j'aurait souhaiter que le nouveau bouton exécute la même macro par le programe. Y'aurait il une solution pour réaliser cette action ? :
'Action de bouton
Private Sub CommandButton1_Click()
Call Statistique
End Sub
'Copier bouton de commande de Feuil1
Worksheets("Feuil1").Activate
ActiveSheet.Shapes("CommandButton1").Select
Selection.Copy
'Coller Bouton dans Feuil2
Worksheets("Feuil2").Activate
Range("F2").Select
ActiveSheet.Paste
Merci d’avance pour votre aide
Dahlia
Salut le forum
Un début de piste à suivre
Sub ExportCodeFeuille()
'Nécessite une référence à Microsoft Visual Basic Extensibility
Dim strCode As String
Dim vbCom As VBComponent
Dim modObj As Object
Set modObj = _
Application.VBE.ActiveVBProject.VBComponents.Item("Feuil1")
strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines)
Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
Application.VBE.ActiveVBProject.VBComponents.Item("Feuil2") _
.CodeModule.AddFromString (strCode)
End SubCréation manuellement du bouton, sans avoir recours au copier
Sub Creer_Bouton()
Dim Fe As Worksheet
Dim Ctrl As OLEObject
Dim Btn As CommandButton
Dim Code As String
Set Fe = Worksheets("Feuil1")
With Fe
Set Ctrl = .OLEObjects.Add( _
ClassType:="Forms.CommandButton.1", _
Link:=False _
, DisplayAsIcon:=False, _
Left:=6, _
Top:=45, _
Width:=108, _
Height:=21)
Set Btn = Ctrl.Object
With Btn
.Name = "MonBouton"
.Caption = "Mon beau bouton"
End With
Code = "Private Sub MonBouton_Click()" & vbCrLf
Code = Code & " msgbox ""ça marche ! ;o)""" & vbCrLf
Code = Code & "End Sub" & vbCrLf
With ThisWorkbook.VBProject.VBComponents _
(Fe.CodeName).CodeModule
.InsertLines .CountOfLines + 1, Code
End With
End With
Set Fe = Nothing
Set Ctrl = Nothing
Set Btn = Nothing
End SubMytå
Bonjour Mytå
Merci pour l'aide apporté mais il ne fonction pas avec mon code.
Même j'ai essayé des solutions proposées pour BEBER1212 mais cela n'a pas fonctionné non plus.
L'objectif de mon application est que si on clic sur un bouton dans la feuille active est de créer une nouvelle feuille où son nom va être saisie. Et de copier ce même bouton dans cette nouvelle feuille avec le code attaché au bouton.
Je joins mon fichier (d'essai).
Merci d'avance à tous
Bonjour à tous
Le code de Mytå enfin fonctionne, en fait il y 'avait rien à corriger dans ce code mais il fallait regarder dans la sécurité de Excel.
J'ai simplement cocher la case (faire confiance au projet Visual Basic) dans Editeur approuvés de la fenêtre de sécurité (Outils..Macro..Sécurité).