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.
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
Salut @sylvanu , @eastwick, @sylvanu , je me suis penché sur la question avant ta réponse, ton script marche parfaitement.
J'aimerais comprendre si ça te dérange pas comment tu fait pour déclarer "L" "NomAvant" et "NomAprès" sans passer par Dim etccc ou Option explicit ?
Cordialement
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
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 ?
@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