Function validerNom(nom As String, InitialeMaj As Boolean, Optional carRemplacement As String = "_") As String
' Caractères valides Le premier caractère d'un nom doit être
' une lettre, un trait de soulignement (_) ou une barre oblique inversée (\).
'
' Remarque Vous ne pouvez pas utiliser les lettres « C », « c », « R » ou « r » comme nom défini car ces lettres sont utilisées comme abréviations pour sélectionner une ligne ou une colonne pour la cellule sélectionnée lorsqu'elles sont entrées dans une zone de texte Nom ou Atteindre.
' "L" "C" en français
' Les références de cellules ne sont pas autorisées Les noms ne peuvent pas être une référence de cellule, telle que Z$100 ou R1C1.
' Les espaces ne sont pas valides Les espaces ne sont pas autorisés. Utilisez le trait de soulignement (_) et le point (.) comme séparateurs de mots, par exemple Taxe_Vente ou Premier.Trimestre.
' Longueur des noms Un nom peut contenir jusqu'à 255 caractères.
Dim car1 As String, s As String, test As Range
If carRemplacement = " " Or carRemplacement = Chr(160) Then carRemplacement = "_"
validerNom = nom
' initiales en majuscule
If InitialeMaj Then validerNom = Application.Proper(validerNom)
' remplacer ou supprimer espaces
validerNom = Replace(validerNom, " ", carRemplacement)
validerNom = Replace(validerNom, Chr(160), carRemplacement)
' 1er caratère valide
car1 = UCase(Left(validerNom, 1))
If Not (car1 Like "[A-Z]" Or car1 Like "_" Or car1 Like "\") Then validerNom = "_" & validerNom
'***************************************************************
'nom=référence valide ? L1C1, L1C(-4)
' On Error Resume Next
' Set test = Range(validerNom)
If Len(validerNom) = 1 And (car1 = "L" Or car1 = "C" Or car1 = "R") Then validerNom = "_" & validerNom
On Error Resume Next
' supprimer si nom existant
Names(validerNom).Delete
On Error GoTo 0
' test si nom = référence valide
On Error Resume Next
s = ""
s = Range("" & validerNom & "").Address
If Err = 0 Or Len(s) <> 0 Then
' si pas d'erreur, c'est une référence A1 ou R1C1, non valide
validerNom = "_" & validerNom
End If
On Error GoTo 0
' 255 car max
If Len(validerNom) > 255 Then nom = Mid(validerNom, 1, 253) & Format(Rnd() * 100, "00")
End Function