Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Renomer les feuilles

  • Initiateur de la discussion Initiateur de la discussion Hugues
  • Date de début Date de début

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 !

Hugues

XLDnaute Impliqué
Bonjour Le Forum,

Dans le module VBA, dans la partie projet, je visualise l'ensemble des feuilles du classeur.
Je souhaiterais les renomer afin de les positionner dans le même ordre que dans le classeur.

Comment peut-on Faire ?

Merci par avance,

Hugues
 
Re : Renomer les feuilles

Bonsoir,

Sauf erreur, le fait de renommer tes feuilles dans VBE ne les placera pas dans l'ordre de celles de ton fichier. D'ailleurs quelle importance ?

Cordialement

Edit : Bonsoir Gorfael, pas vu.
 
Re : Renomer les feuilles

Bonsoir à tous

une solution vba, si j'ai bien compris...

Code:
Sub test()
Dim sh As Worksheet, i As Byte
i = 1
For Each sh In Worksheets
    ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name = "Feuille" & i
    i = i + 1
Next sh
End Sub

Attention il faut que l'option "Faire confiance au projet vb" soit cochée, pour ce faire => barre de menu => Outils => Macro => sécurité => onglet "sources fiables"

bonne soirée
@+
 
Re : Renomer les feuilles

Bonsoir Pierrot, MJ13, Spit, Gorfael, JHA, Hugues et le forum,

Pierrot, ta macro, oui, (dans ce cas c'est l'index des feuilles qui continue de s'appliquer.
Renommer par NAME en VBE, oui aussi (c'est lui qui classe sur les nouveaux noms), donc auquel cas, c'est l'ordre alphabétique que l'on trouve en VBE.

Mais l'ordre des feuilles sur le classeur n'est pas forcément le même ne serait-ce que la structure propre d'un classeur. On peut avoir "Sommaire" au début etc... etc...

Je ne vois pas ici comment classer en VBE l'exacte apparence du classeur et comme dis Spit. Quelle importance ?

Bonne soirée tous.

Jean-Pierre
 
Re : Renomer les feuilles

Bonjour à tous

Jean-Pierre, je ne comprends pas trop ton message, pour moi cette macro reclasse bien les feuilles dans la fenêtre vbaProject dans le même ordre que celui du classeur...

Ou alors il y a quelque chose qui m'échappe complètement, mais c'est bien possible... Tu as testé chez toi et cela ne fonctionne pas ?

Enfin dès l'instant ou tu n'as pas plus de 9 feuilles, si c'est le cas, initialiser la variable "i" à 10 plutôt qu'à 1.

A noter que le classement dans la fenêtre Vbaproject se fait sur le "codename" de la feuille, c'est celui ci que je modifie, je ne touche pas à la propriété "Name" de la feuille.

bonne journée
@+
 
Dernière édition:
Re : Renomer les feuilles

Bonjour le fil,
Bonjour Pierrot,

Effectivement ça fonctionne pour n<10 et au delà, il faut démarrer le compteur à 10 au moins. Par ailleurs, pour éviter un bug du à l'utilisation d'un codename déjà existant je te propose la modif suivante :
Code:
Sub SpitnolanCodeName()
'***Réattribution des CodeName et classement des feuilles de code dans l'ordre du classeur
'***Nécessite que les codename existant des feuilles soit de la forme : "abcdefg0#......." 
'***D'après un code original de Pierrot93 pour Xld
Dim sh As Worksheet, i As Byte
Dim a As Byte, n As Byte
'***Détermine le 1er Code.name non utilisé
For Each sh In Worksheets
    a = Val(Mid(ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name, 8))
    n = WorksheetFunction.Max(n, a)
Next

i = n + 1
For Each sh In Worksheets
    ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name = "Feuille" & i
    i = i + 1
Next
'***Pour renuméroter depuis 11
i = 11
For Each sh In Worksheets
    ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name = "Feuille" & i
    i = i + 1
Next
End Sub
La dernière boucle n'est pas indispensable mais elle permet de numéroter les feuilles comme dans le classeur. La 1ère est la Feuille11, la 2ème la Feuille12...

Bien cordialement
 
Dernière édition:
Re : Renomer les feuilles

Re Bonjour à tous,
Salut Spitnolan 🙂

pour le fun, autre solution pour éviter le bogue si le "codename" est déjà existant :

Code:
Sub test()
Dim sh As Worksheet, i As Byte, monnom As String
monnom = "Feuille": i = 97
debut:
For Each sh In Worksheets
    If sh.CodeName Like monnom & "*" Then _
        monnom = monnom & Chr(i): i = i + 1: GoTo debut
Next sh
i = 10
For Each sh In Worksheets
    ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name = monnom & i
    i = i + 1
Next sh
End Sub

a noter que par defaut 1er codename est "Feuil1" (sur version Française Excel)

bon après midi
@+
 
Re : Renomer les feuilles

Bonsoir le fil, Pierrot,

Pour répondre à ton post de 7h47.

J'ai utilisé un fichier qui m'avait servi, entre autre, à tenter de répondre à ce fil, donc beaucoup d'essais dedant. Suite à ta question, j'ai viré tout ce qui était inutile et là non plus, cela ne marchait pas.

Je me suis aperçu par ailleurs, suite à ta réponse que j'avais 10 feuilles dans le classeur.

Si je modifiais l'ordre des feuilles et que je relancais, un beug ici : ThisWorkbook.VBProject.VBComponents(sh.CodeName).Name = "Feuille" & i

J'ai donc attendu ce soir pour faire un essai sur un autre post sur un autre fichier et cela fonctionne. On peut même rechanger l'ordre des feuille et relancer sans problème. ?????

Par contre ton second code fonctionne à tous les coups..

Désolé de mon message, je n'ai pas assez testé donc.

Bonne soirée.

Jean-Pierre
 
- 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
2
Affichages
247
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…