Tri [Résolu]

Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
- - Dernière réponse : sebleboss2002
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
- 27 févr. 2005 à 16:59
Bonjour tout le monde



Je sais que plusieurs messages ainsi que plusieurs sources concernent
déjà ce sujet, mais je n'ai rien trouvé d'assez simple pour moi :s



Donc voilà, j'ai un tableau contenant 10 valeurs mélangées, et je veux les trier dans l'ordre décroissant...



J'ai déjà tenté un code, mais il ne fonctionne pas :



For j = 1 To IndexScore



For i = 1 To IndexScore



MsgBox Mid(ScoreF(i), 4, Len(ScoreF(i)) - 3)



If ScoreF(i) < ScoreF(i+1) Then

Temp(1) = ScoreF(i)

ScoreF(i) = ScoreF(i + 1)

ScoreF(i + 1) = Temp(1)

End If



Next i



Next j


Si quelqu'un pouvait se pencher sur mon cas, ce serait gentil, merci
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
338
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
4 novembre 2008
3
Merci
je crois que je sais ou est le probleme. tu est entrain de comparer des chaine la.
c pourkoi
25>247>123>12
quand on compare des chaine oui 25>247>123>12
alors tu dois faire les changement suivant

remplacer

If ScoreF(i) < ScoreF(i+1) then

par

If val(ScoreF(i)) < val(ScoreF(i+1) ) then

normalement ca marchera

Hassen TUNISIE

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
0
Merci
P.S : Sachant que IndexScore est le nombre de valeurs dans le tableau...
Messages postés
338
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
4 novembre 2008
0
Merci
le code est normalement juste il y a juste quelque remarque

remplacer
For i = 1 To IndexScore

par
For i = 1 To IndexScore - 1

et

Temp(1) = ScoreF(i)
ScoreF(i) = ScoreF(i + 1)
ScoreF(i + 1) = Temp(1)

par

Temp= ScoreF(i)
ScoreF(i) = ScoreF(i + 1)
ScoreF(i + 1) = Temp

mais il faut faire attention en vb si tu declare un tableau dim
t(2) as integer
ca veut dire que t'a les valeur suivante t(0),t(1) et non t(1), t(2)

Hassen TUNISIE
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
0
Merci
Euh... Ben si le code est juste, il reste un problème :



J'ai quatre valeurs dans mon tableau : ScoreF(1) = 112


ScoreF(2) = 123


ScoreF(3) = 25


ScoreF(4) = 247



Et le classement final est : 25 > 247 > 123 > 112.



Pourquoi le 25 vient-il en premier ?!
Messages postés
338
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
4 novembre 2008
0
Merci
j'ai essayer le code avec les parametre que t'a donnee et il m'a donnee un bon resultat

Hassen TUNISIE
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
0
Merci
Ah oui ça fonctionne impec maintenant !



Merci beaucoup d'avoir pris le temps de m'aider