Tri

Résolu
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 à 15:10
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

6 réponses

cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
27 févr. 2005 à 16:57
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
3
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 à 15:11
P.S : Sachant que IndexScore est le nombre de valeurs dans le tableau...
0
cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
27 févr. 2005 à 15:48
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
0
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 à 15:53
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 ?!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_hassen Messages postés 338 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 4 novembre 2008
27 févr. 2005 à 16:49
j'ai essayer le code avec les parametre que t'a donnee et il m'a donnee un bon resultat

Hassen TUNISIE
0
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
Ah oui ça fonctionne impec maintenant !



Merci beaucoup d'avoir pris le temps de m'aider
0
Rejoignez-nous