Organisation des feuille d'un classeur excel

Résolu/Fermé
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 - 19 nov. 2008 à 14:56
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 21 nov. 2008 à 19:13
Bonjour,
J'aimerais savoir s'il existe un petit truc pour ranger des feuille d'un classeur excel 2003 par ordre alphanumérique croissant?

J'ai un classeur de 200 pages... les ranger une par une je vais pas y arriver... srtout que le nombre de page est amener a encore augenter...
A voir également:

11 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
20 nov. 2008 à 18:39
Bonsoir,

Oui, je l'avais pressenti que j'avais répondu un peu vite ;-)
et je ne disposais plus de temps pour tester et corriger...
Avec les éléments que tu donnes ça devrait être mieux avec ça :
Sub TrierOnglets()
    Dim Boucle As Integer, Compteur As Integer
    For Boucle = 5 To Sheets.Count
        For Compteur = 1 To (Boucle - 1)
            If Right("0000" & Mid(UCase(Sheets(Boucle).Name), 2, 30), 4) < Right("0000" & Mid(UCase(Sheets(Compteur).Name), 2, 30), 4) Then
                Sheets(Boucle).Move before:=Sheets(Compteur)
                Exit For
            End If
        Next Compteur
    Next Boucle
End Sub


C'est limité à des nombres de 4 chiffres, si plus tu mets "00000" et tu changes '30), 4)' en '30), 5)' (2 fois chaque)
Si certaines feuilles ne devant pas être triées sont touchées il faudra ajouter d'autres contrôles if...

eric
1
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 nov. 2008 à 19:23
Bonjour Eric, une autre piste que j'ai pas suivi (mais que j'aurais dû faire), la somme ASCII du nom ?
Ce serrait valable dans tout les cas. Alpha et/ou Num. ?
A+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212 > lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
20 nov. 2008 à 20:15
Bonsoir lermite,

Faudrait tester mais je dirais que non.
Tu trouveras 8<12 mais 338 > 321 non ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
21 nov. 2008 à 11:33
Re,
N'est-ce pas le but rechercher ?
Tu trouveras 8<12 mais 338 > 321
autrement dit..
8<12 et 321<338 ?
Mais pour des nombres ce n'est évidement pas nécessaire, je pensais surtout à...
L7 > L69 par comparaison, mais par somme L7 < L69 ?
A+
0
m@rina Messages postés 20036 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 19 avril 2024 11 269
19 nov. 2008 à 15:23
0
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 29
19 nov. 2008 à 15:33
cette macro est génial et surtout super rapide...
j'en avais fait une super longue et compliquer qui rammant a plus finir...

Merci :)

Cependant, j'ai une petit question...
mes feuille on un format : 1 Lettre + 1 nombre
exemple L423, L5 ou L530

et le problème c'est plutot que des les avoir :
en premier L5 apres L423 et apres L530

J'obtient avec la macro :
en premier L423 apres L5 et en dernier L530...

Existe t il un moyen de remédier a cela???

Si ca n'existe pas tant pis, je ferrais avec.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 nov. 2008 à 15:28
Bonjour,
Il n'est pas possibel de renommer une feuille par un nom de feuille déjà existant, il faut donc employer une petite astuce.
Tu copie cette fonction dans UN MODULE GENERAL, genre Module1. (pas un module de feuille)
Sub ChangeNomFeuille()
Dim TB
Dim NB As Integer, i As Integer, CH As Boolean, Buff
    NB = Sheets.Count
    ReDim TB(NB)
    For i = 1 To NB
        TB(i) = Sheets(i).Name
    Next i
'--------------------------------------
Trier:
    CH = False
    For i = 1 To NB - 1
        If TB(i) > TB(i + 1) Then
            CH = True: Buff = TB(i)
            TB(i) = TB(i + 1): TB(i + 1) = Buff
        End If
    Next i
    If CH Then GoTo Trier
'---------------------------------------
    For i = 1 To NB
        Sheets(i).Name = i
    Next i
    For i = 1 To NB
        Sheets(i).Name = TB(i)
    Next i
End Sub

S'il devait y avoir un problème NE SAUVE PAS LE CLASSEUR.
Mais serrait quand même mieux que tu fasse un backup AVANT.
Tu dit.
A+
0
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 29
19 nov. 2008 à 15:34
bonjour,
je ne voi pas vraiment ce que tu veux dire.

Il n'y a pas de feuille ayant le nom
elle ont toutes un nom différents...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 nov. 2008 à 16:18
Beh évidemment qu'elle ont un nom, ça les trie par ordre croissant.
Tu a tester ?
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 20036 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 19 avril 2024 11 269
19 nov. 2008 à 20:53
Bonsoir tous les deux,

mdr !!! J'ai l'impression d'assister à une conversation de sourds-muets... sauf que c'est par écrit...

Pour se résumer, Qhes est content de la macro, mais il trouve dommage que le classement alphabétique mette, par exemple, L3 après L15...

... et que le L65 se trouve avant le L9 !

Problème de classement de nombres... reconnu comme du texte...
Je ne vois pas bien comment faire autrement...

m@rina
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
20 nov. 2008 à 19:20
Bonjour Marina, j'epspère qu'étant morte de rire tu n'est pas PED ...attention au lumbago :-)
Regrade les tempo des réponses, il m'a fallu plus de temps pour envoyer ce bout de code( qu'est pas bon) que pour mettre un lien ( que je ne connaissais pas.)
Cordialement.
A+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
19 nov. 2008 à 21:36
Bonsoir tout le monde,

si vraiment les noms ont tous 1 lettre et un nombre on peut adapter la macro de lupin :
Sub TrierOnglets()
Dim Boucle As Integer, Compteur As Integer
For Boucle = 1 To Sheets.Count
For Compteur = 1 To (Boucle - 1)
If Mid(UCase(Sheets(Boucle).Name), 2, 30) < Mid(UCase(Sheets(Compteur).Name), 2, 30) Then
Sheets(Boucle).Move before:=Sheets(Compteur)
Exit For
End If
Next Compteur
Next Boucle
End Sub

A la limite on peut ajouter le test de la 1ère lettre pour ne trier que les feuilles commençant par L...

eric

PS: pas trop le temps mais à la reflexion il faudra peut-être plutôt utiliser qcq chose comme mid("0000"&Mid(UCase(Sheets(Boucle).Name), 2, 30),4) pour trier...
0
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 29
20 nov. 2008 à 08:52
bonjour,
en fait oui on s'est un peu perdu :)

sinon pour ma macro toute les feuilles a partir de la 5eme feuille ont le meme format : L et un nombre.

Je viens d'essayer la nouvelle macro mais la feuille L7 est toujours en les feuille L69 et L700
0
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 29
21 nov. 2008 à 09:58
c'est vraiment génial...
Ca marche merci bcp!!!

Juste encore une qyuestion... est ce que c'est possible de dire à la macro de ne pas toucher au 5 premières feuilles?

je sais j'en demande bcp... si c trop dite le moi...

Si c pas possible tant pis :)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 nov. 2008 à 11:37
Bonjour,
Je ne sais pas si Eric est présent pour le moment mais en reprenant ses 2 lignes...
    For Boucle = 5 To Sheets.Count
        For Compteur = 1 To (Boucle - 1)

modifiées..
    For Boucle = 6 To Sheets.Count
        For Compteur = 6 To (Boucle - 1)

Je pense que ça ira..
A+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
21 nov. 2008 à 19:13
Merci de ton intervention.
C'est vrai qu'en plus j'avais oublié de modifier la 2nde boucle...
Pour l'exemple de la somme des codes ascii c'est vrai que je n'ai pas fait fort :-) je pensais plutôt à 328>331
Merci pour le retour qhes
A+
eric
0
JOLARITALE Messages postés 144 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 10 décembre 2014 4
21 nov. 2008 à 11:40
c'est cool cette macro
0
Qhes Messages postés 176 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 21 mai 2014 29
21 nov. 2008 à 11:46
Merci bcp
0