Trier des articles de CCTP (utilisé dans le bâtiment)

taupin -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voilà moi je cherche à trier des numéro de CCTP à partir d'une base de données.
Exemple sur un onglet je plusieurs n° de CCTP dans une colonne (1.1.1 ; 2.1 ; 2.1.1 ; 2.2.2.2...)
Mon problème est qu'Excel n'arrive pas à trier un chiffre ayant plus d'un séparateur (ici les points).
Je ne sais pas s'il existe une astuce ou bien une autre formule pouvant faire ce tri.

Merci à toutes les personnes qui se tueront à la tâche^^

A bientôt.

4 réponses

  1. Fahora Messages postés 949 Statut Membre 68
     
    Bonjour ,

    Voilà moi je cherche à trier des numéro de CCTP à partir d'une base de données.

    Quand tu dis base de données , tu ne parles pas d'une base excel , n'est ce pas ?

    Si cette base n'est pas extraite d'excel, peux tu nous donner un apercu du
    résultat ou de l'erreur qu'excel te met lorsque que tu l'importes vers excel ?

    Si cette base de données provient d'excel , le tri peut etre effectué meme avec des nombres à plusieurs virgules puis qu'au delà d'une virgule, Excel ne le considère plus comme tel.

    Cdlt,
    0
    1. taupin
       
      Bonjour Fahora,

      Tout d'abord merci de te réponse c'est sympa. Je te réponds à mon tour car il y a toujours un hic.
      Donc c'est bien une base de donnée excel. Et excel ne comprends pas ce que je souhaite faire car il considère le numéro à 1 virgule comme un chiffre et le numéro à plusieurs virgules comme un texte. Je te donne un exemple pour que ce soit concret :
      Voici les numéros que je souhaite trier :
      4.2
      1.1
      1.1.1
      2.1.5
      0.2.4

      Voici ce que le tri par ordre croissant me donne :
      1.1
      4.2 (ici il a mit le numéro en 2eme position car il a d'abord trier les numéro à 1 virgule)
      0.2.4
      1.1.1
      2.1.5

      Voici ce que moi je souhaite :
      0.2.4
      1.1
      1.1.1
      2.1.5
      4.2

      J'espère que j'ai été plus clair cette fois-ci, et si tu as la solution en tête ce serait génial.
      Merci à bientôt.
      0
  2. yclik Messages postés 3875 Date d'inscription   Statut Membre Dernière intervention   1 611
     
    Bonjour
    essayer de mettre les cellules au format texte
    0
    1. taupin
       
      Bonjour yclik,

      Tout d'abord merci de te réponse c'est sympa. Je te réponds à mon tour car il y a toujours un hic.
      J'ai testé votre solution et elle ne marche pas. Excel considère toujours numéro à 1 virgule comme un chiffre (même au format textre) et le numéro à plusieurs virgules comme un texte. Je te donne un exemple pour que ce soit concret :
      Voici les numéros que je souhaite trier :
      4.2
      1.1
      1.1.1
      2.1.5
      0.2.4

      Voici ce que le tri par ordre croissant me donne :
      1.1
      4.2 (ici il a mit le numéro en 2eme position car il a d'abord trier les numéro à 1 virgule)
      0.2.4
      1.1.1
      2.1.5

      Voici ce que moi je souhaite :
      0.2.4
      1.1
      1.1.1
      2.1.5
      4.2

      J'espère que j'ai été plus clair cette fois-ci, et si tu as la solution en tête ce serait génial.
      Merci à bientôt.
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Une petite macro créant dans la colonne (libre) à droite de la sélection une numérotation permettant les tris.
    Sub numChapitre()
        Const sep As String = "."
        Dim datas, result, tmp
        Dim tailleNum(0 To 9) As Long, lig As Long, i As Long
        
        If Selection.Columns.Count > 1 Then Exit Sub
        datas = Selection.Value
        For lig = 1 To UBound(datas)
            tmp = Split(datas(lig, 1), sep)
            For i = 0 To UBound(tmp)
                tailleNum(i) = Application.Max(tailleNum(i), Len(tmp(i)))
            Next i
        Next lig
        For lig = 1 To UBound(datas)
            tmp = Split(datas(lig, 1), sep)
            For i = 0 To UBound(tmp)
                tmp(i) = Format(tmp(i), Application.Rept("0", tailleNum(i)))
            Next i
            datas(lig, 1) = Join(tmp, sep)
        Next lig
        Selection.Offset(, 1) = datas
    End Sub 

    https://www.cjoint.com/c/FFpj2P714XX
    eric
    0
    1. taupin
       
      Bonjour Eric,

      Merci pour le fichier c'est nickel, vous avez bien compris mon souci. Le seul truc qui ne comprend toujours pas, c'est lorsque l'on a un numéro avec une seule virgule. La macro le ressort alors qu'avec le premier des 2 chiffres...

      On y est presque alléluia ;)
      Encore merci et à bientôt
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Quelle virgule ? Il n'était question que de points.
      Et quel est le séparateur décimal utilisé ?
      Merci de fournir un fichier exemple.
      eric

      edit :
      essayer en remplaçant la dernière ligne par :
          With Selection.Offset(, 1)
      .NumberFormat = "@"
      .Cells = datas
      End With
      0
    3. taupin
       
      Bonjour Eric,

      Désolé pour ma réactivité. Voici le fichier que j'ai modifié (en rajoutant vos dernières lignes comme vous m'avez indiqué, mais je ne suis pas sûr que je l'ai bien intégré étant novice):
      http://www.cjoint.com/c/FFwjQbvVE2S

      Effectivement on parle bien que de points. Ici la macro ne comprend pas le 4.2 car il n'a qu'un seul point... et le tri de la colonne B n'est plus correct.

      Cdt,
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    pas de soucis chez moi, c'est bien trié.

    Tu n'as pas dû resélectionné la plage et lancé la macro après avoir fait la modif (?)
    eric
    0
    1. taupin
       
      Bonjour Eric,

      Chez moi le 4.2 se transforme en 004. Pouvez-vous me renvoyez votre macro en entière car c'est pas possible que cela fonctionne chez vous et pas chez moi^^.

      En tout cas le problème sera réglé. Merci beaucoup pour votre attention.
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      j'étais en congés...
      La capture écran que j'ai mise est faite à partir du fichier que tu as fourni, la macro est donc correcte pour moi (séparateur décimal : le point).
      eric
      0