TRIS successifs de 4 colonnes

Bonjour,

Mon problème me paraissait simple, tout autant que la solution mais ça marche pas vraiment comme je veux:

J'ai 4 colonnes à trier.

Les trois premières sont des références de produits à trier alphanumériquement.

Là... pas de problème

Il reste alors à faire un 4ème et dernier tris sur la colonne total (J) de façon à placer les valeurs nulles en dernières positions ... MAIS sans changer l'ordre de tri des 3 premières colonnes !

Quelque chose m'échappe si je n'utilise que la fonction Données/trier sans passer par un code VBA !

Je pesne à une sorte de tri conditionnel mais je ne vois pas où et comment imposer ces conditions.

Merci à vous ...

xls en annexe.

15tri-zero.zip (57.34 Ko)

Bonjour

Je ne crois pas que cela soit possible

Si tu veux les cellules vides à la fin ton tri ne sera plus bon

Exemple

TITRE 1TITRE 2
1z
5v
3f
1

Un tri normal ferait ça

TITRE 1TITRE 2
1z
1
3f
5v

mais toi tu veux avoir ça

TITRE 1TITRE 2
1z
3f
5v
1

donc le tri en colonne 1 est perdu

A suivre ce fil

Bonjour Banzaï,

Oui, en effet c'est sur ce problème de perte des premiers tris que je butte

Espérons une botte secrète ... ???

Je laisse donc le post ouvert ...

@+

Bonjour,

en s'aidant d'une colonne temporaire :

Sub tri()
    Dim lig As Long
    Range("E13:L24").Sort Key1:=Range("E13"), Key2:=Range("F13"), Key3:=Range("G13"), Header:=xlNo, DataOption3:=xlSortTextAsNumbers
    [M:M].Insert Shift:=xlToRight
    For lig = 13 To 24
        Cells(lig, "M") = lig - ((Cells(lig, "J") = 0) * 100000)
    Next lig
    Range("E13:M24").Sort Key1:=Range("M13"), Header:=xlNo
    [M:M].Delete
End Sub

eric

Edit :

Ah, désolé, je n'avais pas vu sans vba...

Donc en M13: =LIGNE()+((J13=0)*1000)

Trier E, F, G, puis un autre tri sur M

Bonjour Eriiic,

Merci pour cette solution.

1) En effet, si on ne veut pas de Macro, le subterfuge d'une colonne supplémentaire me paraît incontournable pour y faire un tri "isolé" des autres.

2) Je m'étais également tourné vers une macro qui masque les lignes dont le total est à zéro pour les "sortir" des tris.

Elle est cependant un peu plus longue que la tienne, surtout au niveau de l'écriture des tris !

Je préfère donc largement Ton code au mien

J'ai donc juste transposé la colonne N de ta Macro en colonne M dans le fichier ci- joint pour y laisser aussi ta solution de la colonne supplémentaire en M.

Je vois que ta macro utilise aussi une colonne de travail supplémentaire pour y faire le tri final, indépendant des autres tris.

Tout est alors finalement résumé dans le fichier joint.

Merci.

20tri-zero.zip (107.35 Ko)

Bonjour,

Mes 2 propositions sont indépendantes.

C'est l'une ou l'autre. La macro n'a pas besoin de la formule sur la feuille et gère sa colonne M par insertion/suppression

eric

Hello Eriiic,

oui, oui, c'est bien clair.

C'est l'une ou l'autre solution.

Je les ai reprise toutes les deux pour info dans un fichier récapitulatif global.

Merci.

@++

Ok, j'ai eu un doute si j'avais été clair à moment donné

Une autre idée. En M13 :

=SI(J13=0;"z";"")&DROITE(REPT("y";18)&E13;18)&DROITE(REPT("y";18)&F13;18)&DROITE(REPT("y";18)&G13;18)

trier juste sur cette colonne.

(avec des ref de 18 car. maxi, sinon augmenter)

J'ai un doute sur son comportement si tu as des ref qui commencent par Y ou Z mais les différents caractères au-dessus de Z que j'ai testés, excel les place en tête alors qu'ils ont un code ascii supérieur. Si tu as plus de courage que moi pour en tester d'autres...

eric

Héé,

Je vais essayer par curiosité mais les solutions précédentes sont déjà trrrrrès efficaces !

Merci à toi.

@++

Rechercher des sujets similaires à "tris successifs colonnes"