XL 2016 nom de chaque onglet selon contenu cellules dans un autre onglet

eastwick

XLDnaute Impliqué
Bonjour à toutes et tous,
Je souhaiterais que chaque onglet de mon fichier prenne son nom dans les cellules de l'onglet "onglets".
J'ai fait manuellement le "Feuil1". Le "Feuil2" devra s'appeler bg 2022, le "Feuil3" gh 2022 etc etc...
Un petit code vba est souhaité, forcément.
Merci beaucoup.
 

Pièces jointes

  • noms d'onglets.xlsm
    13.4 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Eastwick,
un essai en PJ avec :
VB:
Sub renomme()
    Application.ScreenUpdating = False
    For L = 2 To Range("A65500").End(xlUp).Row
        NomAvant = Cells(L, "A"): NomAprès = Cells(L, "B")
        If FeuilleExiste(NomAvant) = True And FeuilleExiste(NomAprès) = False Then
            Sheets(NomAvant).Name = NomAprès
        End If
    Next L
End Sub
Function FeuilleExiste(Nom) As Boolean
  On Error Resume Next
  FeuilleExiste = Sheets(Nom).Name <> ""
  On Error GoTo 0
End Function
 

Pièces jointes

  • noms d'onglets.xlsm
    22.4 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour eastwick, sylvanu, jui42,

En repérant les feuilles par leurs CodeNames :
VB:
Sub Nommer_onglets()
Dim s As Object
On Error Resume Next
For Each s In Sheets
    s.Name = Application.VLookup(s.CodeName, Columns("A:B"), 2, 0)
Next
End Sub
A+
 

Pièces jointes

  • noms d'onglets.xlsm
    26.2 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Eastwick, Job, Jui,
@Jui, Je n'ai pas mis Dim ( optionel ) car je suppose que cette macro va être intégrée dans le fichier final, et vous pourrez déclarer ce Dim en tête de votre macro complète, pour être homogène.
@job, le problème de Codename, à mon avis, est que si une feuille est supprimée par erreur et recréer avec par exemple le nom de Feuil2, alors son Codename pourra être différent de Feuil2. Non ?
 
Dernière édition:

job75

XLDnaute Barbatruc
@job, le problème de Codename, à mon avis, est que si une feuille est supprimée par erreur et recréer avec par exemple le nom de Feuil2, alors son Codename pourra être différent de Feuil2. Non ?
Bien sûr mais le CodeName reste le meilleur moyen de repérer les feuilles si on ne les supprime pas.

Maintenant on peut aussi les repérer par leur position (Index) mais c'est nettement moins fiable :
VB:
Sub Nommer_onglets()
Dim s As Object
On Error Resume Next
For Each s In Sheets
    s.Name = Application.VLookup(s.Index, Columns("A:B"), 2, 0)
Next
End Sub
 

Pièces jointes

  • noms d'onglets(1).xlsm
    26.2 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof