Renommer automatiquement les onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DANMACRO12

XLDnaute Nouveau
BOnjour

Je voudrais dans le fichier joint renommer de façon automatique tous les onglets par un nom que je placerai dans la cellule C3 de chaque onglet que ce soit sous un fichier xls ou xlsx

Je bute à chaque fois sur des problèmes de syntaxe

Le nombre d'onglet peut varier

Merci d'avance
 

Pièces jointes

Bonjour DANMACRO12

Vois si tu peux t'inspirer de ceci


J'essaie mais en prenant le nom déjà placé cela ne fonctionne pas

encore merci
Bonjour,
Ceci peut-être
Code:
Sub renomeJJ()
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If sh.[c3] <> "" Then
            sh.Name = sh.[c3].Value
        End If
    Next
End Sub

Salutations
JJ


Merci cela marche très bien

Bon we
 

Pièces jointes

Bonjour Ce lien n'existe plus

Peut-on le faire automatiquement, je veux dire dés que la valeur est saisie dans "C3".

Merci d'avance.
Re...
Place ceci dans le ThisWorkbook de ton classeur
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$C$3" And Sh.[c3] <> "" Then
        For Each Sh In ThisWorkbook.Worksheets
         If Sh.Name = Target.Value And Sh.Name <> ActiveSheet.Name Then
            MsgBox "Unefeuille de ce nom est déjà existante", 64, "Information"
            Exit Sub
         End If
     Next
     ActiveSheet.Name = Target.Value
     End If
End Sub
 
Re,

Merci Ce lien n'existe plus, c'est tout simplement parfait... Que dire de plus.
Re...
Rien, 😉 mais remplacer le code par celui-ci, plus complet
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     If Target.Address = "$C$3" And Sh.[c3] <> "" Then
         For Each Sh In ThisWorkbook.Worksheets
          If UCase(Sh.Name) = UCase(Target.Value) And UCase(Sh.Name) <> UCase(ActiveSheet.Name) Then
             MsgBox "Unefeuille de ce nom est déjà existante", 64, "Information"
             Exit Sub
          End If
      Next
      ActiveSheet.Name = Target.Value
      End If
End Sub
 
Peux-tu me dire quelle est la différence entre ses 2 lignes.

Code:
If Sh.Name = Target.Value And Sh.Name <> ActiveSheet.Name Then

If UCase(Sh.Name) = UCase(Target.Value) And UCase(Sh.Name) <> UCase(ActiveSheet.Name) Then

Merci.
Re...
Dans ce code
If Sh.Name = Target.Value
Un nom de feuille écrit par exemple "Feuil1" et en c3 "feuil1", la comparaison ou l'égalité ne sera pas équivalente en vba, et Excel t'enverra une message box disant que l'on ne peut pas nommer 2 feuilles du même nom " Erreur d'exécution 1004"
Pour éviter cela on utilise "Ucase", qui transforme durant le test "Feuil1" en "FEUIL1", la comparaison se fera sur les 2 noms en majuscule et évitera ce message box..
Des informations sur "Ucase":
Dans le code sélectionner "Ucase" puis appuyer sur F1

Bonne utilisation
JJ
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 tableau d'alerte
Réponses
2
Affichages
108
Réponses
5
Affichages
579
Réponses
13
Affichages
720
Réponses
5
Affichages
340
  • Question Question
Microsoft 365 concours pétanque
Réponses
0
Affichages
195
Retour