Tri tableau par ordre décroissant

adelaidetermote

XLDnaute Nouveau
Bonjour tout le monde

Petit post car j' ai un problème avec un algorithme de tri VBA. Alors en fait je crée un tableau temporaire td a 43 lignes et 2 colonnes dans un code VBA dans lequel est envoyé par une boucle FOR un nombre et un nom respectivement dans la 1ere et 2eme colonne. Après ceci je souhaite donc effectuer un tri dans ce tableau afin que les données soient rangées dans l' ordre décroissant. Voici le code de tri appliqué

For i = 0 To 42
For j = 0 To 42
If td(i, 0) < td(j, 0) Then
temp0 = td(i, 0)
temp1 = td(i, 1)
td(i, 0) = td(j, 0)
td(i, 1) = td(j, 1)
td(j, 0) = temp0
td(j, 1) = temp1
End If
Next j
Next i

J'ai un problème parce que il marche pas tout simplement:D, enfin pas d' erreur dans le code mais il ne range pas du tout les données par ordre décroissant....:confused: et je ne sais pas pourquoi

Alors si vous avez des petites idées, je suis preneur, merci à tous

Bonne journée

Adé
 

ROGER2327

XLDnaute Barbatruc
Re : Tri tableau par ordre décroissant

Bonjour adelaidetermote
Avez-vous essayé avec
Code:
[B]td(i, 0) [COLOR=Red]>[/COLOR] td(j, 0)[/B]
?
ROGER2327
#4450


Mardi 3 As 138 (Couronnement de Lord Patchogue, miroitier, SQ)
15 Brumaire An CCXIX
2010-W44-5T09:24:16Z
 

adelaidetermote

XLDnaute Nouveau
Re : Tri tableau par ordre décroissant

Euh oui juste pour voir, mais avec ce signe ça me donne le tri dans l' ordre croissant. Je pense le code tri ne fonctionne pas, je pense pas que ce soit du au signe de comparaison, parce que quand j' appel les premières valeurs du tableau elles sont pas triées, par exemple j' ai eu

4.76
4.34
4.12
4.23

Je comprend pas trop:confused:

Merci d' avoir porté attention à mon post

Adé
 

ROGER2327

XLDnaute Barbatruc
Re : Tri tableau par ordre décroissant

Re...
Bonjour à tous
Le code à l'air correcte, pouvez-vous nous montrer un extrait des données ? Elles sont peut-être pas triables les unes avec les autres en l'état.
En l'état, la procédure trie en ordre croissant. D'où ma suggestion...
Mais vous avez raison, le problème est peut-être dans les données, pas dans le code. Il serait intéressant de voir quelques échantillons de données.
ROGER2327
#4451


Mardi 3 As 138 (Couronnement de Lord Patchogue, miroitier, SQ)
15 Brumaire An CCXIX
2010-W44-5T09:44:45Z
 

ROGER2327

XLDnaute Barbatruc
Re : Tri tableau par ordre décroissant

Re...
Euh oui juste pour voir, mais avec ce signe ça me donne le tri dans l' ordre croissant. Je pense le code tri ne fonctionne pas, je pense pas que ce soit du au signe de comparaison, parce que quand j' appel les premières valeurs du tableau elles sont pas triées, par exemple j' ai eu

4.76
4.34
4.12
4.23

Je comprend pas trop:confused:

Merci d' avoir porté attention à mon post

Adé
Très bizarre ! Vos données traitées avec le code
td(i, 0) > td(j, 0) adopte l'ordre : 4.76 ; 4.34 ; 4.23 ; 4.12.​
ROGER2327
#4452


Mardi 3 As 138 (Couronnement de Lord Patchogue, miroitier, SQ)
15 Brumaire An CCXIX
2010-W44-5T09:50:28Z
 

adelaidetermote

XLDnaute Nouveau
Re : Tri tableau par ordre décroissant

Croissant Décroissant ça dépend dans quel sens on prend le tableau lol...:pmais < est le signe qu'il me faut. Voila le code VBA en entier:

ReDim td(42, 1)


For x = 2 To 44
col = Target.Column
If Target.Column = 10 Then
dif = Abs(Asc(Sheets(x).Cells(14, col).Value) - Asc(UCase(Target.Value)))
Else
dif = Abs(CDec(Sheets(x).Cells(14, col).Value) - CDec(Target.Value))
End If
td(x - 2, 0) = dif
td(x - 2, 1) = x
Next x



For i = 0 To 42
For j = 0 To 42
If td(i, 0) <= td(j, 0) Then
temp0 = td(i, 0)
temp1 = td(i, 1)
td(i, 0) = td(j, 0)
td(i, 1) = td(j, 1)
td(j, 0) = temp0
td(j, 1) = temp1
End If
Next j
Next i


For x = 0 To 3
Cells(30 + x, 4).Value = Sheets(td(x, 1)).Name
Next x
Target.Font.ColorIndex = 2

Petite explication succinte, en fait je rentre un nombre dans une cellule sur une feuille 1 et il compare ce nombre à toutes les feuilles du fichier qui possède un nombre dans une cellule définie (la même pour chaque feuille).
Le but est de faire la différence, de les mettre dans un tableau et de les trier par ordre du plus petit au plus grand en partant du haut du tableau

Je comprend pas pour quelles raisons ca ne fonctionne pas, j' ai du commetre une erreure quelque part mais ou that the question:(:confused:

Merci

Adé
 

Odesta

XLDnaute Impliqué
Re : Tri tableau par ordre décroissant

Euh oui juste pour voir, mais avec ce signe ça me donne le tri dans l' ordre croissant. Je pense le code tri ne fonctionne pas, je pense pas que ce soit du au signe de comparaison, parce que quand j' appel les premières valeurs du tableau elles sont pas triées, par exemple j' ai eu

4.76
4.34
4.12
4.23

Je comprend pas trop:confused:

Merci d' avoir porté attention à mon post

Adé


Il me semble que le code fonctionne. Et j'avoue ne pas comprendre ce qui cloche. Pour aller plus loin, pourreiz vous nous fournir le tableau ? Avec uniquement les valeurs utiles au programmes.

Olivier
 

adelaidetermote

XLDnaute Nouveau
Re : Tri tableau par ordre décroissant

Je pense avoir des éléments de réponse....Avec des nombres entiers le code fonctionne bien, pas relevé de problème.

Je suppose que cela viendrait éventuellement du fait que je compare des nombres décimaux...Je sais pas trop, je doute:confused: qu 'en pensez vous?

Surtout si cela provient de ça comment faire pour résoudre le problème?
Adé
 

Odesta

XLDnaute Impliqué
Re : Tri tableau par ordre décroissant

Que donne ceci (transformation en string)

Code:
For i = 0 To 42
For j = 0 To 42
If CSTR(td(i, 0)) < CSTR(td(j, 0)) Then
temp0 = td(i, 0)
temp1 = td(i, 1)
td(i, 0) = td(j, 0)
td(i, 1) = td(j, 1)
td(j, 0) = temp0
td(j, 1) = temp1
End If
Next j
Next i
 

adelaidetermote

XLDnaute Nouveau
Re : Tri tableau par ordre décroissant

Le sujet n' est pas le signe de comparaison je pense, finalement qu'il me donne les plus grande ou les plus petite valeur triées ça ne change pas grand chose, puisqu'il me suffira de changer le signe après en fonction de l' ordre que je souhaite:p. Le problème c' est qu'il ne trie pas...Et non tout ne va pas bien, sinon je n'aurai pas effectué un post...:confused:

Merci quand même Roger:)

Alors j' ai fait le test en avec des nombre entier ca fonctionne très bien...Je pense que c' est le fait que ca soit des nombre décimaux qui embrouille un peu le code.

Pour le CSTR j' ai testé, ça ne change pas...:(toujours le même ordre ( pas trier), ce qui me semble bizarre c' est qu'il me donne: 4.76 4.60 4.12 4.48 (pkoi 4.12 mal placé:confused:) et en cas d' égalité du nombre saisi et du nombre comparé il ne me le ressort pas. Par exemple si je rentre 4.5 et que parmi les données qu'il compare il y a 4.5 4.2 4.4 4.85 4.8 il me ressort 4.4 4.2 4.8 4.85:confused:

Je comprend pas du tout ou est le bug

Il doit me manquer un élément pour qu'il prenne en compte les nombres décimaux.

Problème, si vous avez des suggestions je suis vraiment preneuse

Voili voilou

Merci

Adé
 

Discussions similaires

Réponses
0
Affichages
119

Statistiques des forums

Discussions
312 550
Messages
2 089 523
Membres
104 202
dernier inscrit
khaledscenic