Organisation des feuille d'un classeur excel

Résolu
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...
Configuration: Windows XP
Internet Explorer 6.0

11 réponses

  1. Contributeur
    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
    1. Contributeur
      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
    2. Contributeur
      @lermite222Bonsoir lermite,

      Faudrait tester mais je dirais que non.
      Tu trouveras 8<12 mais 338 > 321 non ?
      0
    3. Contributeur
      @eriiicRe,
      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
  2. Modérateur
    0
    1. 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
  3. Contributeur
    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
    1. 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
  4. Contributeur
    Beh évidemment qu'elle ont un nom, ça les trie par ordre croissant.
    Tu a tester ?
    A+
    0
    1. Modérateur
      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
      1. Contributeur
        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
    2. Contributeur
      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
      1. 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
        1. 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
          1. Contributeur
            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
            1. Contributeur
              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