Trier du plus grand au plus petit

Résolu/Fermé
mic6259 Messages postés 342 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 11 décembre 2023 - 19 mai 2020 à 07:38
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 20 mai 2020 à 15:51
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

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
19 mai 2020 à 15:32
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
1
Le Pingou Messages postés 12199 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024 1 450
19 mai 2020 à 21:06
Merci, c'est super bien réalisé.
Salutations
Le Pingou
0
mic6259 Messages postés 342 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 11 décembre 2023 1
20 mai 2020 à 07:34
Bonjour ccm81
Super le fichier, serait-il possible de faire l'inverse du plus petit au plus grand.
merci beaucoup
Cdlmnt
0
Le Pingou Messages postés 12199 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024 1 450
20 mai 2020 à 10:01
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
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426 > Le Pingou Messages postés 12199 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024
20 mai 2020 à 11:45
Salut Le Pingou

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

Bonne journée
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426 > mic6259 Messages postés 342 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 11 décembre 2023
Modifié le 20 mai 2020 à 11:48
Tu changes le "D" comme décroissant en "C" comme croissant
Call TriSel1C(T, "C")

Bonne journée
0
Le Pingou Messages postés 12199 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024 1 450
19 mai 2020 à 09:11
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

0
mic6259 Messages postés 342 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 11 décembre 2023 1
19 mai 2020 à 10:19
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
0
Le Pingou Messages postés 12199 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 21 novembre 2024 1 450 > mic6259 Messages postés 342 Date d'inscription mercredi 4 mars 2015 Statut Membre Dernière intervention 11 décembre 2023
19 mai 2020 à 21:05
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
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
19 mai 2020 à 12:02
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 !
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
20 mai 2020 à 15:51
Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, dans ton premier message)

Bon après midi
0