Renommer automatiquement les onglets

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

  • TEST.xlsx
    430.5 KB · Affichages: 73
  • TEST.xls
    525 KB · Affichages: 72

DANMACRO12

XLDnaute Nouveau
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

  • A TESTER.xlsm
    1.2 MB · Affichages: 46

Jacky67

XLDnaute Barbatruc
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
 

Jacky67

XLDnaute Barbatruc
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
 

mdo100

XLDnaute Occasionnel
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.
 

Jacky67

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
5
Affichages
210

Statistiques des forums

Discussions
312 198
Messages
2 086 146
Membres
103 130
dernier inscrit
FRCRUNGR