Mettre plusieurs colonnes en ordre

Bonsoir j ai besoin d'un petit truc j ai un tableau avec plusieurs colonne de chiffre en désordre.

qui commence de la colonne A À T je veut trouver comment de les placer en ordre de haut en bas . voir fichier merci

12classeur.xlsx (14.05 Ko)

Bonjour,

En termes de tri de ' plusieurs colonnes ' , il faudrait que tu précises le résultat final que tu attends ...

car ton dessin permet plusieurs interprétations ...

1. S'agit-il de trier tes 20 Colonnes indépendamment l'une de l'autre ...

ou

2. As-tu besoin de l'ensemble des données triées ... et ensuite que leur affichage final soit réparti en 20 Colonnes ...

ou

3. Encore autre chose ... ( un mélange Ascendant et Descendant ... )

Pour un tri indépendant, tu peux tester la macro suivante:

Sub TriIndépendant()
Dim j As Long
For j = 1 To 20
    Range(Cells(1, j), Cells(15, j)).Sort Cells(1, j), xlAscending, Header:=xlNo
Next j
End Sub

Bonjour,

De haut en bas et de gauche à droite, du plus petit au plus grand sur les nombres situés à gauche du tiret. Résultat sur la feuille "Feuil2" :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range
    Dim Tbl() As String
    Dim I As Long
    Dim J As Long
    Dim K As Long

    'défini la plage sur la feuille "Feuil1"
    Set Plage = DefPlage(Worksheets("Feuil1"))

    'dimensionne le tableau au nombre de cellules
    ReDim Tbl(1 To Plage.Rows.Count * Plage.Columns.Count)

    'rempli le tableau
    For Each Cel In Plage

        I = I + 1: Tbl(I) = Cel.Value

    Next Cel

    'effectue un tri croissant sur les nombres situés à gauche du tiret
    Tri Tbl

    'résultat en feuille "Feuil2"
    K = 1

    For I = 1 To UBound(Tbl)

        J = J + 1

        Worksheets("Feuil2").Cells(J, K).Value = Tbl(I)

        If I Mod Plage.Rows.Count = 0 Then K = K + 1: J = 0

    Next I

End Sub

Sub Tri(Tbl() As String)

    Dim Tempo
    Dim I As Long
    Dim J As Long

    'effectue un tri décroissant "<"
    'pour un tri croissant ">"
    For I = 1 To UBound(Tbl) - 1: For J = I + 1 To UBound(Tbl)

            If CInt(Left(Tbl(I), InStr(Tbl(I), "-") - 1)) > CInt(Left(Tbl(J), InStr(Tbl(J), "-") - 1)) Then

                Tempo = Tbl(J): Tbl(J) = Tbl(I): Tbl(I) = Tempo

            End If

    Next J, I

End Sub

Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function

Bonjour désoler du dernier message il était pas vraiment clair, mon tableau à plusieurs colonne de chiffre en désordre le but est de les placé du plus petit au plus gros en vertical.

Bonjour,

En vertical par colonne ou toutes les valeurs sur une seule colonne ?

Dans ton premier fichier, tu as mis deux flèches, l'une vers le bas et l'autre vers la droite que doit-on comprendre ?

As-tu au moins testé le code que j'ai posté ?

Re,

Ta nouvelle explication n'est malheureusement pas plus claire que la précédente ...

Est-ce un problème que de répondre aux questions posées ... ???

Si les mots sont trop compliqués ... un dessin suffira ...

Désoler je n ai porté attention au question.

1. S'agit-il de trier tes 20 Colonnes indépendamment l'une de l'autre ...

ou

2. As-tu besoin de l'ensemble des données triées ... et ensuite que leur affichage final soit réparti en 20 Colonnes ...

ou

3. Encore autre chose ... ( un mélange Ascendant et Descendant ... )

pour ta question c est le numéro 2. merci

Rechercher des sujets similaires à "mettre colonnes ordre"