Option Explicit
Sub Test_III()
Dim Nshp$, NomF
'ajout feuille et nommage de celle-ci
NomF = InputBox("Nom de la feuille à créer?", "Création Feuille", "Feuil" & Sheets.Count + 1)
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(NomF)
'récupération du nom de la forme de la feuille Données
'NB: En situation de test, il n'y avait qu'une forme, d'ou le 1
Sheets("Données").Shapes(1).Name = "Bouton"
Nshp = Sheets("Données").Shapes(1).Name
'recopie de la forme sur la nouvelle feuille
CopierShape Sheets("Données"), Sheets(NomF), Nshp
'attribution d'une macro (stockée dans le module 1) à la forme recopiée
Sheets(NomF).Shapes(1).OnAction = ThisWorkbook.Name & "!Module1.Menu"
Sheets(NomF).Range("A1").Select
End Sub
Private Sub CopierShape(ws1 As Worksheet, ws2 As Worksheet, shpNom As String)
Dim shp As Shape
Set shp = ws1.Shapes(shpNom).Duplicate
shp.Cut: ws2.Paste
ws2.Shapes(shpNom).Name = shpNom & "_Copie"
End Sub
Sub Menu()
Sheets("Feuil1").Activate
End Sub