Code relativement simple et qui ne nécessite pas d'explication complémentaire.
Coller ces deux sub dans un module général (Module1 par exemple).
Sub CréerBouton()
Dim Obj As Object
Dim Code As String
Sheets("Feuil1").Select
'crée le bouton
Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:=100, Height:=35)
Obj.Name = "BoutonTest"
'texte du bouton
ActiveSheet.OLEObjects(1).Object.Caption = "Tester le bouton"
'Le texte de la macro
Code = "Sub BoutonTest_Click()" & vbCrLf
Code = Code & "Call Tester" & vbCrLf
Code = Code & "End Sub"
'Ajoute la macro en fin de module feuille
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With
End Sub
Sub Tester()
MsgBox "Vous avez cliquez sur le bouton test"
End Sub