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

Fermé
taupin - 15 juin 2016 à 08:17
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 8 juil. 2016 à 22:48
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

Fahora Messages postés 814 Date d'inscription jeudi 24 septembre 2015 Statut Membre Dernière intervention 2 janvier 2023 68
15 juin 2016 à 08:26
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
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
yclik Messages postés 3695 Date d'inscription vendredi 25 juillet 2014 Statut Membre Dernière intervention 16 novembre 2024 1 513
15 juin 2016 à 10:19
Bonjour
essayer de mettre les cellules au format texte
0
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
15 juin 2016 à 11:54
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 17/06/2016 à 14:07
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
22 juin 2016 à 15:19
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
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
8 juil. 2016 à 22:48
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