Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range('B5')) Is Nothing Then
If VerifNom(Target.Text) Then
ActiveSheet.Name = Target.Text
End If
End If
End Sub
Private Function VerifNom(V As String) As Boolean
Dim i As Byte
Dim Feuille As Worksheet
If Len(Trim(V)) > 0 Then
VerifNom = True
'31 caractères maxi
If Len(V) > 31 Then
VerifNom = False
MsgBox '''' & V & ''' contient plus de 31 caractères !'
Exit Function
End If
'Caractères interdits
For i = 1 To Len(V)
Select Case Mid(V, i, 1)
Case '/', '\', '?', '*', '[', ']'
VerifNom = False
MsgBox '''' & V & ''' contient un caractère interdit /\?*[]'
Exit For
End Select
Next i
'Feuille existe déjà ?
On Error Resume Next
Set Feuille = Worksheets(V)
On Error GoTo 0
If Not Feuille Is Nothing Then
MsgBox '''' & V & ''' existe déjà !'
VerifNom = False
End If
Set Feuille =Nothing
End If
End Function