Renuméroter les onglets

Bonjour à tous,

Avec une macro je consolide des données de plusieurs feuilles, jusque là rien d'inquiétant me direz vous ^^ le problème se trouve dans "l'ordre" des onglets (voir PJ). Mes feuilles étant en désordre, je ne consolide pas les bonnes valeurs. Il y a-t-il un moyen de redéfinir l'ordre des feuilles ?*

D'avance merci

sans titre

Bonjour,

Si ce sont bien les codename que vous voulez numéroter, essayez ce code

Sub test()
Dim i As Byte
Dim ws as worksheet
For Each ws In ThisWorkbook.Worksheets
    i = i + 1
    On Error Resume Next
    ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Feuil" & i
    On Error GoTo 0
Next ws
End Sub

Si ok, pensez à

Cordialement

Bonjour L_Watt, Ouupppsss! Bonjour Dan,

Il m'arrive de changer manuellement le "Codename" des feuilles quand les gens ajoutent et suppriment des feuilles, les numéros ne se suivent plus.

Dans VBE, l'on sélectionne une feuille dans la section du haut (Project - VBAProject) ...

Si la fenêtre "Properties" n'est pas ouverte, tape "F4" pour la faire apparaître ...

La 1re ligne des propriétés est (Name) c'est le codename ... l'on peut en changer manuellement le numéro s'il n'existe pas déjà dans la liste des feuilles ...

Il faut donc d'abord les renommer avec des numéros n'existant pas dans la liste de nos feuilles (ex. : 201, 202, 203, etc.) pour libérer les numéros que l'on souhaite utiliser ...

Ensuite, l'on recommence à les renommer selon nos préférences ...

Par programmation, c'est plus complexe, il faut faire "Trust access to the VBA object model" ... comprendre comment cela fonctionne ... le programmer ... etc. ... cela reviendrait plus long que le faire manuellement ...

ric

Bonjour L_Watt, le fil, le forum,

@Dan ... Effectivement, c'est plus simple que je me l'imaginais ... j'ai donc désactivé la sécurité et lancer ton code ... lequel fonctionne à merveille comme tous tes codes ... j'apprends beaucoup ...

Pour que le code fonctionne ...

Démarrez Microsoft Excel.

Ouvrez un classeur.

Cliquez sur Fichier, puis sur Options.

Dans la sous-fenêtre de navigation, sélectionnez Centre de gestion de la confidentialité.

Cliquez sur Paramètres du Centre de gestion de la confidentialité.

Dans la sous-fenêtre de navigation, sélectionnez Paramètres des macros.

Vérifiez que la case Accès approuvé au modèle d'objet du projet VBA est cochée.

Cliquez sur OK.

Il faudrait penser à décocher l'option une fois le renommage terminé ...

ric

Bonjour Ric, Bonjour Dan,

Tout d'abord merci pour vos retours ! La macro n'a rien changé Dan. En fait mes onglets sont dans l'ordre (voir PJ) mais lorsque j'ouvre le VBA ils ne le sont plus ...

En effet des onglets ont été rajoutés mais je ne comprends pas le "désordre"

sans titre2

Bonjour L_Watt, le fil, le forum,

Selon l'image de ton 1er post de ta demande, ton fichier comporterait plus de 125 feuilles ... manuellement ce serait plus long ...

Pour utiliser la macro de Dan, tu pourrais écrire 2 colonnes ... l'une avec le numéro souhaité et l'autre le nom des feuilles dans l'ordre des onglets ...

Une petite boucle pourrait en faire l'écriture dans une feuille ajoutée en dernière place, pour ne pas affecter l'ordre des numéros, il ne resterait qu'à changer les numéros manuellement pour ensuite lancer le code de Dan ... en lui faisant lire cette liste ...

Encore là, pour qu'ils s'affichent dans VBE selon l'affichage des onglets ... la correspondance ne sera pas 1 pour 1 ...

Il faut tenir compte du tri de Microsoft ... 1, 10, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 11, 110, 111, etc. pour l'affichage dans VBE ...

1 = 1er onglet, 10 = 2e onglet, 100 = 3e onglet, etc.

ric

Tout d'abord merci pour vos retours ! La macro n'a rien changé Dan. En fait mes onglets sont dans l'ordre (voir PJ) mais lorsque j'ouvre le VBA ils ne le sont plus ...

C'est que vous avez un code qui fait du tri peut etre ?

En effet des onglets ont été rajoutés mais je ne comprends pas le "désordre"

Le code ne rajoute pas des onglets, il renumérote uniquement les codenames.
Exemple dans votre vue Feuil1 restera Feuil1 mais Feuil100 deviendrait Feuil2 (si non existant) et ainsi de suite. Du coup si Feuil2 existe, le code laissera feuil2 au lieu de renuméroter (raison de l'instruction On error resume next).
Vous pouvez partir du numéro le plus haut. Exemple dans votre vue on voit Feuil125. D'où juste avant l'instruction For each WS...., vous pouvez ajouter --> i = 200.
Le code renumérotera à partir de 200.

Expliquez mieux ce que vous voulez ou alors postez votre fichier (sans données confidentielles) ou comme ric le précise en parlant de ".... 2 colonnes ...l'une avec ke numéro..."

Bonjour à tous,

les codesnames dans VBE sont toujours par ordre alphabétique et l'ordre des feuille dans le classeur est totalement indépendant.
Si tu les veux triés dans VBE il faut les nommer sur 3 chiffres. De Feuil001 à Feuilxxx
eric

PS :

...= "Feuil" & Format(i, "000")

Bonjour à tous,

Merci encore pour vos retours, en effet Dan, je souhaite renommer les codename, j'ai ajouté "i = 200" selon votre conseil, ce qui donne :

Sub Rectangle3_Cliquer()

Dim i As Byte
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
i = 200
i = i + 1
On Error Resume Next
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") = "Feuil" & i
On Error GoTo 0
Next ws

End Sub

Vous transférer le fichier est assez problématique d'un point de vue confidentialité ...

Re bonjour,

Comme énoncé au début du post, je "consolide" les données souhaitées avec ce code :

Sub Consolider_Cliquer()

Dim a As Integer, b As Integer
Dim DerniereLigne As Integer
Dim LastRowRECHERCHE As Integer

Application.ScreenUpdating = False

For b = 98 To 101

Sheets(b).Select

For a = 3 To 49

Sheets(b).Select

Rows(a).Select

Selection.Copy

Sheets("RECHERCHE").Select

LastRowRECHERCHE = Range("A1000000").End(xlUp).Row + 1

Cells(LastRowRECHERCHE, 1).Select

ActiveSheet.Paste
Application.CutCopyMode = False

Next a

Next b

Application.ScreenUpdating = True

End Sub

b étant mes onglets, en l'occurrence de 98 à 101

Dans mon tableur il y a des onglets "repères" c'est à dire des onglets vides mais avec un nom me servant de point de début et de fin dans certaines formules, puis-je utiliser ce principe avec le vba ?

Merci

Bonjour,

Sub Rectangle3_Cliquer()

Non le code n'est pas bon. Votre i = 200 n'est pas bien placé. relisez ce que je vous ai écrit ici --> https://forum.excel-pratique.com/s/goto/1084070

Dans mon tableur il y a des onglets "repères" c'est à dire des onglets vides mais avec un nom me servant de point de début et de fin dans certaines formules, puis-je utiliser ce principe avec le vba ?

Comment sont nommés ces onglets ?

Vous transférer le fichier est assez problématique d'un point de vue confidentialité ...

Vous avez un utilitaire ici --> https://forum.excel-pratique.com/forum/anonymiser-les-donnees-confidentielles-des-fichiers-excel-107...

Rem : lorsque vous postez un code, veillez à utiliser les balises de code en cliquant sur l'icone </> dans la barre de menu et en collant le code dans la fenetre

de rien L_Watt...

Eriiic, les remerciements plus haut vous concerne aussi ...

Dan, en effet avant l'instruction For each ... J'ai maintenant un dépassement de capacité ^^

Les onglets "repères" s'appellent "Chimie1" et "Chimie2" , les formules prennent les valeurs comprises entre ces repères

Merci encore

Dan, en effet avant l'instruction For each ... J'ai maintenant un dépassement de capacité ^^

Oui juste, il faut juste changer ceci

Dim i as byte

par

Dim i as integer

Bonjour L_Watt, le fil, le forum,

Si l'intérêt de renommer les "codename" et toujours d'actualité ... j'ai préparé un fichier pour automatiser la chose... 5 minutes et tout est réglé ...

Je me suis servi des suggestions énoncées par Dan et eriiic ... que je remercie pour leur expertise qui m'aide grandement ...

La procédure est dans le fichier ...

Bien évidemment ... il est préférable de tester cela sur une copie du fichier ...

ric

Peut-être...
Mais as-tu seulement lu et testé ce que je te disais ???
Sans retour, pour moi tu ne prends même pas cette peine

Bonjour le fil, le forum,

@eriiic ... Oui et Oui ...

A+

ric

C'était pas pour toi Ric
Mais pour le demandeur...

Rechercher des sujets similaires à "renumeroter onglets"