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

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 !

eastwick

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

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

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:
@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

- 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

Réponses
3
Affichages
52
Retour