Tri sur 5 colonnes

Bonsoir le forum,

Je dois mettre en place un tri sur 5 colonnes...

C'est une liste avec des professeurs, des élèves, des cours, des degrés, des jours....

L'exemple dans mon fichier parle de lui même...plus facile à comprendre...

10tri-5-colonnes.xlsm (22.83 Ko)

Merci pour votre aide

Oli

Bonjour,

C'est pas évident comme ça puisque vous n'avez pas donné d'explications sur votre fichier. On a aucun moyen d'avoir une certitude sur l'ordre de tri.

Il vous faut un tri sur quelles colonnes précisément, et dans quel ordre ?

Le mieux serait déjà de mettre votre tableau sous forme de tableau structuré (Insertion/Tableau). Ensuite ce sera probablement plus clair.

Cdlt,

Bonsoir 3GB,

Le tri doit s'effectuer sur la col A, B , C, D, E

La colonne A , celle des professeurs, ce professeur peut dispenser plusieurs cours (col B), ce cours peut avoir plusieurs degrés (Col C) et peut-être dispensé plusieurs fois (Col D) et enfin l'élève qui le suit (Col E).

Données de Départ :

tri

Après Tri :

tri2

J'espère que cela est plus clair...

Oli

Bonjour,

Alors d'après ce que vous demandez, il vous faut :

Sub trier()

Dim k%

With ActiveSheet.Sort
    with .SortFields
        .Clear
        for k = 1 to 5
            .Add Key:=Range("A1:N26").columns(k), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        next k
    end with
    .SetRange Range("A1:N26")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End sub

Mais le résultat que vous affichez ne correspond pas à ce que vous demandez. Vous triez sur les jours avant les degrés par exemple. Il faudra soit utiliser ce code et disposer les colonnes selon leur ordre dans le tri. Soit laisser les colonnes et modifier le code :

'LIGNES A MODIFIER

        for k = 1 to 5
            .Add Key:=Range("A1:N26").columns(k), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        next k

'PAR L'ORDRE DÉSIRÉ (ICI C'EST UN EXEMPLE QUI SEMBLE PROCHE DE VOTRE SOUHAIT)

.Add Key:=Range("A1:N26").columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("A1:N26").columns(2), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("A1:N26").columns(4), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("A1:N26").columns(3), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Add Key:=Range("A1:N26").columns(5), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

Par ailleurs, les jours sont triés de façon alphabétique et non chronologique. Il faudra peut-être changer les valeurs de cette colonne et éventuellement y mettre des nombres de 1 à 7 en choisissant un format personnalisé jjjj.

Cdlt,

Bonjour 3GB,

Merci beaucoup pour ce code, pour les jours je vais tenter ceci ;

.Add Key:=Range("A1:N26").columns(4), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"LUNDI,MARDI,MERCREDI,JEUDI,VENDREDI,SAMEDI", DataOption:=xlSortNormal
Rechercher des sujets similaires à "tri colonnes"