Trier du plus grand au plus petit [Résolu]

Signaler
Messages postés
229
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
20 mai 2020
-
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020
-
Bonjour,
J'ai trouvé le code sur internet.
Pourriez-vous m'aider a trier le fichier joint du plus grand au plus petit.
Merci beaucoup

https://cjoint.com/c/JEtfJalpXm8

4 réponses

Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020
1 861
Bonjour à tous

Mais il faut trier les 4 colonnes tous ensemble pour obtenir du plus grand a la colonne A au plus petit jusqu'à la colonne D.
Comme ça ?
https://www.cjoint.com/c/JEtnEOHwUUB

Cdlmnt

PS. Ne pas oublier de sélectionner la plage à trier avant Ctrl+k
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020
1 861 >
Messages postés
229
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
20 mai 2020

Tu changes le "D" comme décroissant en "C" comme croissant
Call TriSel1C(T, "C")

Bonne journée
>
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020

Merci ccm81 et Le Pingou
C'est tellement simple
Bonne journée
Cordialement
Messages postés
9733
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 juillet 2020
1 059
Bonjour ccm81,
J’ai étudié votre code et je ne comprends pas à quoi sert l’argument ‘cd’ de la Sub TriSellc au niveau de la ligne
If UCase(cd) = "C" Then ou cd = "D"
Merci de votre lumière.
Salutations
Le Pingou
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020
1 861 >
Messages postés
9733
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 juillet 2020

Salut Le Pingou

Et la lumière fut ;-)
Croissant Décroissant

Bonne journée
Messages postés
9733
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 juillet 2020
1 059 >
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020

Merci.
Bonne journée
Messages postés
9733
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 juillet 2020
1 059
Bonjour,
J’ai mis des titres de colonnes et réalisé un autre code. Bonne découverte.
Merci du retour.
Le lien : https://www.cjoint.com/c/JEthkjn0oA0

Messages postés
229
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
20 mai 2020

Merci Le Pingou pour la réponse rapide.
Mais il faut trier les 4 colonnes tous ensemble pour obtenir du plus grand a la colonne A au plus petit jusqu'à la colonne D.
Cordialement
Messages postés
9733
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
8 juillet 2020
1 059 >
Messages postés
229
Date d'inscription
mercredi 4 mars 2015
Statut
Membre
Dernière intervention
20 mai 2020

Bonsoir,
Eh bien oui j'ai compris tout de travers et heureusement que ccm81 poste 4 (salutations et merci) est venu proposer la solution correcte.
Salutations.
Le Pingou
Messages postés
644
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
13 juillet 2020
64
Bonjour, il manque des déclarations de variable dans ton code, les voici :

Option Compare Text
Sub TriMC2()
Dim i
Dim j
Dim lig
Set rng1 = Range("A2:A10,B2:B10,C2:C10") ' à adapter
Dim temp(), temp2()
ReDim temp(rng1.Count)
ReDim temp2(rng1.Count)
lig = 0
For i = 1 To rng1.Areas.Count
For j = 1 To rng1.Areas(i).Count
If rng1.Areas(i)(j) <> "" Then
lig = lig + 1
temp(lig) = rng1.Areas(i)(j)
temp2(lig) = rng1.Areas(i)(j).Offset(, 1)
End If
Next j
Next i
Call Tri2(temp, temp2, 1, lig)
lig = 0
For i = 1 To rng1.Areas.Count
For j = 1 To rng1.Areas(i).Count
lig = lig + 1
rng1.Areas(i)(j) = temp(lig)
rng1.Areas(i)(j).Offset(, 1) = temp2(lig)
Next j
Next i
End Sub
Sub Tri2(a, b, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
tmp = a(g): a(g) = a(d): a(d) = tmp
tmp2 = b(g): b(g) = b(d): b(d) = tmp2
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri2(a, b, g, droi)
If gauc < d Then Call Tri2(a, b, gauc, d)
End Sub


à tester !
Messages postés
9506
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 juillet 2020
1 861
Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, dans ton premier message)

Bon après midi