Excel 2007 tri alpha numérique

Bonjour, un petit souci avec un tri alpha numérique

F1
F10
F11
F12
F13
F14
F15
F16
F17
F18
F19
F2
F20
F22
F23
F3
F4
F5
F6
F7
F8
F9
T1
T10
T100

Comment trier pour avoir

F1

F2

ect 

F9

F10

F11

avec mes remerciements 

,


Windows / Chrome 132.0.0.0

11 réponses

Résumé de la discussion

Pour trier des codes alphanumériques comme F1, F10, F11, T100, il faut généralement séparer la partie lettre de la partie numérique et les trier sur ces deux critères. Une approche répandue consiste à extraire les lettres dans une colonne et les chiffres dans une autre, puis à trier d'abord sur la colonne lettre puis sur la colonne chiffre, en s’appuyant sur des formules basées sur STXT/TROUVE/SUBSTITUE et CNUM. En cas de données en une seule colonne, une colonne auxiliaire peut combiner une lettre et un nombre formaté, par exemple =GAUCHE(A1;1)&TEXTE(DROITE(A1;NBCAR(A1)-1)*1;"000"), puis trier sur cette clé. Pour les versions anciennes d’Excel, certains remplacent DANSLIGNE par TRANSPOSE et utilisent AGREGAT pour permettre le tri sur plusieurs colonnes.

Bobot (l’IA à votre service)
  1. Bonjour,

    Admis vos données en colonne A .

    Une solution avec une colonne supplémentaire avec en B1 cette formule

    =DROITE(A1;NBCAR(A1)-1)*1

    La tirer vers le bas et ensuite vous réalisez le tri en choisissant cette colonne


    0
    1. Bonjour,

      Salutations Le Pingou

      Une variante pour éviter la mauvaise place dans le tri de T1, T10 et T100

      en colonne B =GAUCHE(A1;1)&TEXTE(DROITE(A1;NBCAR(A1)-1)*1;"000")

      et faire le tri par rapport à la colonne B après sélection des deux colonnes

      Cordialement

      0
      1. Bonjour, PapyLuc51 et Le Pingou

        Super idée super formule, Bravo

        Ne pas oublier de trié avec toute les colonnes 

        Une surprise, dans le tri il y a T128P8

        et il risque dans avoir plusieurs je ne sais pas encore.

        Merci beaucoup en attendant 

        curieux je n'ai pas reçus d'emails pour vos réponses 

        0
    2. Bonjour à tous,

      En supposant, pour rire, qu'il y ait plusieurs lettres et non une seule :

      1. en B1, à recopier vers le bas :

      =GAUCHE(A1;AGREGAT(15;6;DANSLIGNE(CHERCHE({1;2;3;4;5;6;7;8;9;0};A1));1)-1)

      2. En C1, à recopier vers le bas :

      =CNUM(STXT(A1;AGREGAT(15;6;DANSLIGNE(CHERCHE({1;2;3;4;5;6;7;8;9;0};A1));1);9^9))

       Tri personnalisé sur la colonne B et la colonne C.

      Daniel


      0
      1. Bonjour,

        Salutations danielc0 bien vu l'histoire du nombre de lettres à extraire.

        Ça ne fonctionne pas sur mon Excel 2013 (pas de fonction DANSLIGNE()) ; donc à fortiori pas non plus sur le 2007 de jmst1 qui n'a pas non plus la fonction AGREGAT()

        Comme j'ai gardé quelques exemples ; je propose d'extraire d'abord les nombres avec cette formule : en C1 à recopier vers le bas

        =CNUM(STXT(A1;TROUVE("!";SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;1;"!");2;"!");3;"!");4;"!");5;"!");6;"!");7;"!");8;"!");9;"!");0;"!"));99))

        Puis les lettres : en B1 à recopier vers le bas

        =STXT(A1;1;NBCAR(A1)-NBCAR(C1))

        Faire le tri de l'ensemble en fonction des colonnes B & C

        Cordialement

        0
        1. Bonjour à tous,

          @PapyLuc :

          Quand les données sont sur une seule colonne, comme ici, on peut remplacer DANSLIGNE par TRANSPOSE.

          Daniel


          0
          1. OK pour moi ça fonctionne avec TRANSPOSE mais pour l'Excel 2007 par quoi remplacer AGREGAT ?

            Cordialement

            0
            1. Oups, c'est vrai. Essaie  :

              =GAUCHE(A1;MIN(SI(ESTERR(CHERCHE({1;2;3;4;5;6;7;8;9;0};A1));9^9;CHERCHE({1;2;3;4;5;6;7;8;9;0};A1)))-1)

              Daniel


              0
              1. PS. Il est possible qu'il faille valider la formule matriciellement.

                Daniel

                0
            2. OK ça fonctionne sans valider en matricielle, en tout cas sur mon Excel 2013, à confirmer par jmst1.

              Les formules qu'on a données ne vont plus aller avec la surprise de jmst1 dans cette réponse où l'alpha numérotation peut être du type "T128P8".

               bien vouloir fournir une copie de ton tableau, sans les données confidentielles et en expliquant ce que tu cherches à obtenir avant le tri.

              Cordialement

              0
              1. Re-bonjour PapyLuc51,

                Je n'ai pas de tableau actuellement avec cette surprise (sauf un cas:T128P8)

                Mais ce que je sais, si la progression continue, elle sera 

                T128P8, T128P16, T128P24,T128P32 etc. ceci aussi avec F1P8, F1P16, F2P8, F3P8 etc.

                Pour l'instant je n'ai que deux lettres F et T et le max que j'ai c'est T140.

                Donc dans le tri j'ai T126, T127, T128, T129 etc. et le T128P8 n'est pas à la suite de T128, mais après T139-> T128P8.

                Je suppose qu'il vaudras une troisième extraction pour isoler ce P.

                P.S les mails fonctionnent 

                0
            3. Bonjour,

              Quelle est ta version d'Excel ?

              Daniel


              0
              1. Excel 2007

                0
            4. En supposant qu'il y a une seule lettre au début de la chaîne et potentiellement une seule autre lettre dans la chaîne :

              Pour la partie gauche, en ligne 1 à recopier vers le bas  :

              =SIERREUR(GAUCHE(A1;EQUIV(FAUX;STXT(A1;LIGNE(INDIRECT(NBCAR(A1)&":2"));1)<="9";0)+1);GAUCHE(A1;1))

              Pour la partie droite, en ligne 1 à recopier vers le bas :

              =SIERREUR(CNUM(DROITE(A1;NBCAR(SUBSTITUE(A1;GAUCHE(A1;EQUIV(FAUX;STXT(A1;LIGNE(INDIRECT(NBCAR(A1)&":2"));1)<="9";0)+1);""))));CNUM(STXT(A1;2;9^9)))

              Daniel


              0
              1. Merci Danielc0

                Je n'ai pas fait l'essai faute de temps(je dois partir) mais apparemment la progression est fausse 

                Le T128P875 doit être après le T127, T128, T128P8, T128P16 etc..  et non pas au milieu du F12 et F13

                0
              2. @jmst1

                J'avait un peu plus de temps.

                La deuxième formule ce casse le nez  avec l'extraction du P8 ou P875

                T128P8   T    #VALEUR!  idem avec 

                T128P875 T   #VALEUR!

                J'ai supposé au deux points avant le 2 mais ce n'est pas ça

                =SIERREUR(CNUM(DROITE(U155;NBCAR(SUBSTITUE(U155;GAUCHE(U155;EQUIV(FAUX;STXT(U155;LIGNE(INDIRECT(NBCAR(U155)&"2"));1<="9";0)+1);""))));CNUM(STXT(U155;2;9^9)))

                ***

                =SIERREUR(CNUM(DROITE(A1;NBCAR(SUBSTITUE(A1;GAUCHE(A1;EQUIV(FAUX;STXT(A1;LIGNE(INDIRECT(NBCAR(A1)&":2"));1)<="9";0)+1);""))));CNUM(STXT(A1;2;9^9)))

                0
              3. @jmst1

                Pas d'accord :

                Daniel

                0
            5. En B1 :

              =GAUCHE(A1;MIN(SI(STXT(A1;LIGNE(INDIRECT(NBCAR(A1)&":1"));1)>"9";LIGNE(INDIRECT("1:"&NBCAR(A1))))))

              en C1 :

              =CNUM(SIERREUR(GAUCHE(SUBSTITUE(A1;B1;"");EQUIV(FAUX;SI(STXT(SUBSTITUE(A1;B1;"");LIGNE(INDIRECT("1:"&NBCAR(SUBSTITUE(A1;B1;""))));1)<="9";LIGNE(INDIRECT("1:"&NBCAR(A1)-NBCAR(B1))));0)-1);SUBSTITUE(A1;B1;"")))

              en D1 :

              =SIERREUR(GAUCHE(SUBSTITUE(A1;B1&C1;"");EQUIV(FAUX;SI(STXT(SUBSTITUE(A1;B1&C1;"");LIGNE(INDIRECT("1:"&NBCAR(SUBSTITUE(A1;B1&C1;""))));1)<="9";LIGNE(INDIRECT("1:"&NBCAR(SUBSTITUE(A1;B1&C1;"")))));0));"")

              En E1 :

              =SIERREUR(CNUM(SUBSTITUE(A1;B1&C1&D1;""));"")

              A recopier vers le bas. Trier sur B, C, D et E

              Daniel


              0
              1. Merci Danielc0, PapyLuc51 et Le Pingou

                1) Formules matricielles (le piège)

                2) Accepte 875

                3) Peu importe le Nb de chiffres [T1285P5668]

                4) N'accepte pas plusieurs lettres [TF1285AC1000] (ce qui n'est pas mon cas actuellement)

                5) Ne différencie pas minuscule ou majuscule (un bien ou un mal ?)

                Merci à danielc0

                Bonne journée à vous tous.

                0
              2. @jmst1

                Ne pas oublié, dans le tri, de sélectionner toutes les colonnes en plus de trier sur B, C, D et E

                0