Bonjour azerty4, bonjour Dan,
Je me permet de reprendre ce que Dan a proposé et qui devrai répondre à vos attentes. En effet, je me suis permis de compléter le code en y ajoutant deux vérifications, à savoir : S'assurer que le champ ne reste pas vide et que le nom n'est pas déjà assigné à une autre feuille du classeur (nous évitons ainsi des erreurs d'exécution )
Option Explicit
Private Sub CommandButton1_Click()
Dim Sh As Worksheet, Source As Worksheet
If Me.TextBox1 = "" Then MsgBox "Please, choose a Part Name.", vbExclamation: Me.TextBox1.SetFocus: Exit Sub 'S'assurer que le textbox ne reste pas vide, sinon message d'information et sortie du programme
For Each Sh In ThisWorkbook.Worksheets 'Boucler sur toutes les feuilles du classeur pour s'assurer qu'une autre feuille du même nom n'existe pas
If LCase(Sh.Name) = LCase(Me.TextBox1) Then 'Si une feuille du même nom alors :
MsgBox "Name already taken, please choose another one.", vbExclamation 'Message d'information
Me.TextBox1.SetFocus 'Remise du focus sur le textbox (car perdu suite au clic sur le bouton)
Exit Sub 'Sortie du programme
End If
Next Sh
Set Source = ThisWorkbook.Worksheets("ShToPast") 'Définir la feuille à copier
Application.ScreenUpdating = False 'Annulation du rafraichissement de l'écran
Source.Visible = xlSheetVisible 'Rendre visible la feuille à copier
Source.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) 'Copier la feuille en dernière position
ThisWorkbook.ActiveSheet.Name = Me.TextBox1 'Renommer la feuille par la saisie du textbox
Source.Visible = xlSheetHidden 'Remise à l'état cachée de la feuille source
Application.ScreenUpdating = True 'Réactivation du rafraichissement de l'écran
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub