Tri par ordre croissant dans une cellule

Résolu
sandwyne -  
The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche une solution pour trier par ordre croissant des valeurs numériques dans une cellule. Par exemple en A1 J'ai: 1233, 4416, 2256, 1659 et je souhaite obtenir: 1233, 1659, 2256, 4416. Mon problème est que je n'ai vu nul part de solution pour trier plusieurs données enregistrées dans une même cellule. Est-ce c'est possible?

6 réponses

  1. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonjour,
    teste ce code, normalement il devrait faire ton affaire, les valeurs numériques à l'origine sont en colonne A et les valeurs trier dans l'ordre croissant seront en colonne B
    Ps: pour lancer ta macro il faut créer un bouton de Cde

    Private Sub CommandButton1_Click()
    Dim plage As Range, DerCel As Range, cel As Range
    Dim tbl(), TbTrie As Integer, x As Integer, cible

    With Sheets("Feuil1") 'à remplacer par le nom de feuille
    Set DerCel = .Range("A" & .Rows.Count).End(xlUp)
    Set plage = .Range("A2", DerCel) 'si titre en A1
    For Each cel In plage
    ReDim tbl(UBound(Split(cel, ",")))
    For x = 0 To UBound(tbl)
    tbl(x) = Split(cel, ",")(x)
    Next x
    Do
    TbTrie = 0
    For x = 0 To UBound(tbl) - 1
    If Val(tbl(x)) > Val(tbl(x + 1)) Then
    cible = tbl(x)
    tbl(x) = tbl(x + 1)
    tbl(x + 1) = cible
    TbTrie = 1
    End If
    Next x
    Loop While TbTrie = 1
    cible = Join(tbl, ",")
    cel(1, 2) = cible
    Next cel
    End With
    End Sub

    Slts
    1
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Tu peux effectuer cette opération en 3 temps :
    1) scinder la cellule avec la virgule pour séparateur,
    2) effectuer le tri des éléments
    3) regrouper ces éléments.

    A+
    0
  3. Raymond PENTIER Messages postés 58219 Date d'inscription   Statut Contributeur Dernière intervention   17 485
     
    Bonjour sandwyne.

    Non, il n'est pas possible d'effectuer un tri à l'intérieur d'une cellule.
    Il est obligatoire de sortir de la cellule, comme Gyrus le propose.
    D'ailleurs pourquoi et comment plusieurs nombres se retrouvent-ils dans une même cellule ?
    Excel est conçu pour gérer des données placées chacune dans sa cellule.
    Il est anormal et contre-indiqué d'en mettre plus d'une par cellule.

    C'est bien, la retraite ! Surtout aux Antilles ... :-) 
    Raymond (INSA, AFPA, CF/R)
    0
  4. sandwyne
     
    Bonjour Gyrus,
    J'ai déjà réalisé la solution que vous me proposez sur une vingtaine de cellules mais mon fichier en compte plus de mille!! Je ne peux pas tout traiter comme cela...Merci pour votre réponse rapide
    Raymond Pentier, je me doutais bien que cela ne se faisait pas après de nombreuses recherches sur le net, mais j'avais espéré une formule miracle...! En fait mon fichier est un export de base de données voilà pourquoi j'ai des suites de nombre dans la même cellule. Merci et bonne journée à vous
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sandwyne
     
    Bonjour The_boss_68
    Je viens de tester ce code et ça marche, c'est génial!!!
    Merci beaucoup
    et très bonne fin de journée
    0
  7. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Re

    Au cas ou tu voudrais trier ces valeurs numérique dans la même colonne
    il faut modifier cette ligne du code

    cel(1, 2) = cible

    Par
    cel(1, 1) = cible

    Voilà
    Si ton problème est réglé, merci d'aller en haut de page
    pour cliquer sur « Marquer comme résolu ».
    Slts
    0