Bonjour,
avec le code de cette même personne :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Nom As String
'Cette ligne permet d'activer la macro que lorsque la cellule J2 est modifié
'Tu peux donc mofifier les coordonnées de cette cellule en mettant A2 ou C8 peu importe
If Not Intersect(Range("J2"), Target) Is Nothing And Target.Count = 1 Then
'Si ta cellule est vide alors on quitte la macro sinon ...
If Target = "" Then Exit Sub
'Tous les lignes qui suivent sont là pour remplacer les caractères spéciaux par des "_"
Nom = Target
Nom = Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace(Nom, "&", "_"), _
":", "_"), _
"/", "_"), _
"\", "_"), _
"?", "_"), _
"*", "_"), _
"[", "_"), _
"]", "_")
'cette partie previent lorsqu'un onglet possède déjà le nom voulu
Nom = Left(Nom, Application.Min(31, Len(Nom)))
If FeuilleExiste(Nom) = True Then
If Sheets(Nom).Index <> Sh.Index Then
MsgBox "Une feuille avec le même nom existe déjà"
Target = ""
Exit Sub
End If
End If
Sh.Name = Nom
End If
End Sub
Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function
A insérer dans le module "ThisWorkbook" sous VBA dan l'onglet "Développeur" d'excel.
Si besoin,
A plus