Trier

Bonjour le Forum,

J'essai de trier une Colonne.

J'ai:

1

20

3

La fonction trier fonctionne très bien et me donne:

1

3

20

Seulement sur mon excel j'ai:

1.00 mm

20.00 mm

3.00 mm

Et là ça me laisse dans cette ordre à cause des "mm"

Une idée comment je pourrai faire s'il vous plait ?

Bonjour,

C'est confus !...

Alors joins un petit classeur pour illustrer tes propos.

Cdlt.

Mince, je n'arrive jamais à être très clair je crois

Et voila :

5trier.xlsm (16.43 Ko)

Bonjour,

il faut passer par les options :

Fichier -> Options -> Options Avancées. Décocher Utiliser les séparateurs système puis remplacer la , par un .

Puis format de cellule :

00.00" mm"

J'espère que c'est le résultat souhaité

12trier-2.xlsm (18.26 Ko)

Oui ça peut y répondre mais remplacer par la , me pause soucis pour le reste de mon excel :/

Oui, j'ai testé beaucoup de chose, apparemment c'est le seul moyen si tu veux des points à la place des virgules sur ces résultats.

Peut-être par VBA, mais là, je laisse le soins aux membres compétents

Ah.. Okey, merci tout de même pour ton aide krobart501. Malheureusement cette solution de modifier en , me poserait bien des soucis.

Messieurs les Membres VBA auriez-vous une solution ?

Re,

Une piste à explorer.

Cdlt

Public Sub Sort_Data()
Dim ws As Worksheet, rng As Range
    Application.UseSystemSeparators = False
    Application.DecimalSeparator = "."
    Set ws = ActiveSheet
    Set rng = ws.Cells(2, 4).Resize(3)
    With ws.Sort
        .SortFields.Add rng.Cells(1), xlSortOnValues, xlAscending
        .SetRange rng
        .Header = xlNo
        .Apply
        .SortFields.Clear
    End With
    Application.UseSystemSeparators = True
End Sub

Je suis pas un Crac en VBA du coup la piste va être compliqué à explorer

Mais merci tout de même d'y avoir réfléchi..

Re,

Le résultat est il concluant sur une plage plus importante et des données différentes ?

Cdlt.

Personnellement quand j'ai mis ta macro a la place de ma macro 7 ça n'a rien changé. Le résultat est le même. Ça fonctionne chez toi ?

Re,

Bon, je n'ais pas vraiment testé !...

On va faire plus simple.

Cdlt.

4trier.xlsm (25.12 Ko)
Public Sub Sort_Data()
Dim tbl, i As Long, j As Long, a, b, tmp
    tbl = ActiveSheet.Cells(2, 4).Resize(7).Value
    For i = 1 To UBound(tbl)
        For j = i To UBound(tbl)
            a = Val(Split(tbl(i, 1), " ")(0))
            b = Val(Split(tbl(j, 1), " ")(0))
            If b < a Then
                tmp = tbl(j, 1)
                tbl(j, 1) = tbl(i, 1)
                tbl(i, 1) = tmp
            End If
        Next j
    Next i
    ActiveSheet.Cells(2, 4).Resize(7).Value = tbl
End Sub

Bonjour

J'ai testé une première fois ça fonctionnais très bien et là ça ne fonctionne plus.. J'ai voulu tester.

Crois-tu qu'il est possible que les lignes suivent ?

4trier.xlsm (19.58 Ko)

Bonjour,

ta question était posée pour le tri d'une colonne unique.

Tu envoies maintenant une plage de cellules à trier !?

Clos ce sujet et ouvre en un autre avec un fichier et pose précisément ta question.

Sinon, pour la procédure précédente qui ne fonctionne plus.

Tu as inséré un espace en début des chaînes de caractères

Ci-dessous, la révision :

Public Sub Sort_Data()
Dim tbl, i As Long, j As Long, a, b, tmp
    tbl = ActiveSheet.Cells(2, 4).Resize(7).Value
    For i = 1 To UBound(tbl)
        For j = i To UBound(tbl)
            a = Val(Split(Trim(tbl(i, 1)), " ")(0))
            b = Val(Split(Trim(tbl(j, 1)), " ")(0))
            If b < a Then
                tmp = tbl(j, 1)
                tbl(j, 1) = tbl(i, 1)
                tbl(i, 1) = tmp
            End If
        Next j
    Next i
    ActiveSheet.Cells(2, 4).Resize(7).Value = tbl
End Sub

Cdlt.

D'accord, excuse moi c'est que ça a évolué entre temps.

Merci Jean-Eric

Rechercher des sujets similaires à "trier"