Renommer feuille automatiquement

Bonjour à toutes et tous,

Je fais appel à vos lumières pour changer automatiquement le nom de certains onglets.

J'ai une feuille "Paramètres" ou il y a le nom des feuille que je souhaite donner. J'aimerai que le nom se change automatiquement dès que je saisie ou modifie le nom dans l'onglet "Paramètres". J'ai fait une macro pour le changement de nom, et je pensais qu'en faisant référence à la feuille paramètres cela fonctionnerai, mais non!

je souhaite ainsi changer que les onglet de couleur pastel.

De plus je souhaite pouvoir mettre ce bout de code permettant d'éviter les erreurs de nommage!

    If newName = "" Then
        MsgBox "Le champ du nom est vide"
        Exit Sub
    ElseIf Len(newName) > 31 Then
        MsgBox "Le nom dépasse 31 caractères"
        Exit Sub
    ElseIf newName Like "*[\/?*[ou]*" Then
        MsgBox "Le nom contient des caractères non autorisés"
        Exit Sub
    End If

En pièce jointe le fichier.

Merci de votre aide.

Bonjour,

Voici ci-joint un exemple. J'ai essayé d'être le plus exhaustif possible dans les risques d'erreur potentielle mais j'en ai peut-être oublié.

Pour info je ne suis pas sur que votre Like fasse ce que vous voulez. Pouvez-vous décrire les caractères recherchés ?

Ci-après le code :

[Feuille paramètres]

Private ancienNom As String

Private Sub Worksheet_Change(ByVal Target As Range)
  ' on vérifie qu'on modifie la colonne b
  If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
  ' qu'une seule cellule est modifiee
  If Target.Count > 1 Then Exit Sub
  ' et que la cellule est non nulle
  If Target.Value2 = vbNullString Then Exit Sub

  Application.EnableEvents = False
  Dim wksht As Worksheet
  For Each wksht In ThisWorkbook.Worksheets
    If wksht.Name = ancienNom Then
      If Not RenommerOnglet(wksht, Target.Value2) Then
        ' si le renommage echoue, on remet l'ancien nom dans la cellule
        Target.Value2 = ancienNom
      End If
      Exit For
    End If
  Next wksht
  Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
  If Target.Value2 = vbNullString Then Exit Sub
  ancienNom = Target.Value2
End Sub

[Module1]

Option Explicit

Public Function RenommerOnglet(onglet As Worksheet, nvNom As String) As Boolean
  ' verification que le nom est valide
  If Not VerifierNom(nvNom) Then
    RenommerOnglet = False
    Exit Function
  End If

  ' verification que le nom n'est pas deja pris
  Dim wksht As Worksheet
  For Each wksht In ThisWorkbook.Worksheets
    If wksht.Name = nvNom Then
      MsgBox "Le nom [" & nvNom & "] est déjà utilisé !"
      RenommerOnglet = False
      Exit Function
    End If
  Next wksht

  ' verification que l'onglet est colore
  ' pour verifier exactement la couleur : onglet.tab.color = 11389944
  If onglet.Tab.Color Then
    onglet.Name = nvNom
    RenommerOnglet = True
  End If

End Function

Public Function VerifierNom(nom As String) As Boolean
  VerifierNom = True
  If nom = "" Then
    MsgBox "Le champ du nom est vide"
    VerifierNom = False
  ElseIf Len(nom) > 31 Then
    MsgBox "Le nom dépasse 31 caractères"
    VerifierNom = False
  ElseIf nom Like "*[\/?*[ou]*" Then
    MsgBox "Le nom contient des caractères non autorisés"
    VerifierNom = False
  End If
End Function

Merci beaucoup Saboh12617 pour ton aide.

Je passe la discussion en "résolu".

Bonne soirée

Rechercher des sujets similaires à "renommer feuille automatiquement"