Problème de tri sur tableaux (collection Objets)

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 18 mars 2006 à 21:35
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 19 mars 2006 à 09:43
Bonjour

Problème de tri dans un tableau.

J'ai un tableau sur 3 colonnes et 16 lignes

EXPLOIT.EDITCAE ,
198,
62 %,
----

----
</TD>
EXPLOIT.EDITCAE-ANN ,
351,
70 %,
----

----
</TD>
EXPLOIT.EDITION ,
8,
19 %

J'aimerais recrée un autre tableau mais trié (décroissant) sur la 3ème colonne
pour avoir comme résultat


EXPLOIT.EDITCAE-ANN ,
351,
70 %

EXPLOIT.EDITCAE ,
198,
62 %

EXPLOIT.EDITION ,
8,
19 %

Si quelqu'un peut m'orienter car à force de tester , je me suis completement égaré dans cet algotithme (tri à bulles)

Merci
jean-marc

2 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
18 mars 2006 à 22:50
Bonsoir,

Autant pour moi, si je précise pas le language...
Des suggestions en VB6 me suffisent, je les traduirai en VBS.
A l'origine, je pars d'un fichier txt pour afficher le résultat dans un html

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
19 mars 2006 à 09:43
Bonjour à tous....

J'essaie un tri à bulles.
Si le contenu de var(t) est > 10 et =< 99 c'est ok
mais si var(t) < à 10 ou > à 100, ça ne marche plus !!!
Pour les tests, j'ai prérenseigné toutes mes variables.
'
Dim ligne(16) 'taux(16), tail(16), fich(16)


taux62=62: taux70=70: taux13=13: taux56=56: taux77=77: taux19=19: taux48=48: taux61=61: taux72=72: taux57=57: taux45=45: taux84=84: taux33=33: taux30=30: taux76=76: taux61=61:

fich62=62: fich70=70: fich13=13: fich56=56: fich77=77: fich19=19: fich48=48: fich61=61: fich72=72: fich57=57: fich45=45: fich84=84: fich33=33: fich30=30: fich76=76: fich61=61:

tail62=62: tail70=70: tail13=13: tail56=56: tail77=77: tail19=19: tail48=48: tail61=61: tail72=72: tail57=57: tail45=45: tail84=84: tail33=33: tail30=30: tail76=76: tail61=61:

'Mise en tauxs temporaires
imax = 16 '-->Nombre de fiches
ligne(1) = taux62 & "!" & "fich62" & "|" & "tail62"
ligne(2) = taux70 & "!" & "fich70" & "|" & "tail70"
ligne(3) = taux13 & "!" & "fich13" & "|" & "tail13"
ligne(4) = taux56 & "!" & "fich56" & "|" & "tail56"
ligne(5) = taux77 & "!" & "fich77" & "|" & "tail77"
ligne(6) = taux19 & "!" & "fich19" & "|" & "tail19"
ligne(7) = taux48 & "!" & "fich48" & "|" & "tail48"
ligne(8) = taux61 & "!" & "fich61" & "|" & "tail61"
ligne(9) = taux72 & "!" & "fich72" & "|" & "tail72"
ligne(10) = taux57 & "!" & "fich57" & "|" & "tail57"
ligne(11) = taux45 & "!" & "fich45" & "|" & "tail45"
ligne(12) = taux84 & "!" & "fich84" & "|" & "tail84"
ligne(13) = taux33 & "!" & "fich33" & "|" & "tail33"
ligne(14) = taux30 & "!" & "fich30" & "|" & "tail30"
ligne(15) = taux76 & "!" & "fich76" & "|" & "tail76"
ligne(16) = taux61 & "!" & "fich61" & "|" & "tail61"


bpermute = True 'Il faut au moins parcourir une fois
Do While bpermute = True 'On tourne tant que l'on bouge des valeurs
bpermute = False 'Si on est ici c qu'il faut réinitialiser bpermute

For t = 1 To imax - 1 'On tourne autant de fois qu'il y a de fiches
'(-1 vu qu'on compare 2 valeurs)
'iPos = InStr(1, ligne(t), "!")
'MsgBox Left(ligne(t), iPos - 1)
If ligne(t) < ligne(t + 1) Then 'Si on a trouvé deux valeurs mal rangées
'(autrement dit une valeur qui se
'trouve plus bas dans le tableau mais qui
'est plus levée...
cprovisoire = ligne(t) 'On inverse les deux chaines
ligne(t) = ligne(t + 1) 'bis
ligne(t + 1) = cprovisoire 'bis
bpermute = True
End If
Next
Loop


'Affichage du résultat classé
For i = 1 To imax
liste = liste & ligne(i) &vbCrLf
If i = imax Then MsgBox liste
Next
0
Rejoignez-nous