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 Sub

Cré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 Sub

Mytå

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

345copiebouton.zip (29.38 Ko)

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é).

Rechercher des sujets similaires à "comment dupliquer bouton code"