ASP - FONCTION DE TRI D'UN TABLEAU EN ASP

cs_Mercury Messages postés 329 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 octobre 2005 - 23 avril 2002 à 17:07
sbicha Messages postés 1 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 22 août 2006 - 22 août 2006 à 15:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8797-asp-fonction-de-tri-d-un-tableau-en-asp

sbicha Messages postés 1 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 22 août 2006
22 août 2006 à 15:51
Bonjour,

Je voulais juste vous remercier pour cette fonction qui m'a été très utile et très efficace.

Bonnes continuations ;o)
cs_shinrei Messages postés 17 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 24 août 2006
19 mai 2006 à 16:50
Non au faite il y aune erreur sur le code de gkuhmel :
Quand on a le nb de colonnes > 3 , il y a des erreurs.

Je me suis permis de le rectifier:

function TriTableau (LeTableau, k, asc)
' Permet renvoyer un tableau Trié issu du tableau transmis en
' paramêtre (N lignes, x colonnes) et avec le N° de la colonne à trier k

'Dim Tableau_Tampon
Max = Ubound(LeTableau)
NbColonnes = Ubound(LeTableau, 2)
Dim Ligne_Tampon
redim Ligne_Tampon(NbColonnes) ' ici on recupere le nb de colonne exact
If k <= nbColonnes Then
'ReDim Tableau_Tampon(Max, 3) ' A quoi sert ce tableau??
i = 0
Do until i = Max
' Chaque élément est comparé à celui qui lui est supérieur dans le classement
j= 0
Do until j = Max
Dim test
If asc = "ASC" Then
test = LeTableau(j, k) > LeTableau((j + 1), k)
Else
test = LeTableau(j, k) < LeTableau((j + 1), k)
End if
If (test) Then
' l'élément J est plus important que l'élément J + 1 alors on les intervertit
For indexColonne = 0 To nbColonnes
Ligne_Tampon(indexColonne) = LeTableau(j,indexColonne)
LeTableau(j,indexColonne) = LeTableau((j + 1),indexColonne)
LeTableau((j + 1),indexColonne) = Ligne_Tampon(indexColonne)
Next
End If
j=j+1
loop
i=i+1
loop
End if
TriTableau = LeTableau
End Function

Ciao,
cs_shinrei Messages postés 17 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 24 août 2006
19 mai 2006 à 11:57
Excellent le dernier code! Merci beacoup
gkuhmel Messages postés 4 Date d'inscription mardi 24 février 2004 Statut Membre Dernière intervention 25 janvier 2006
25 janv. 2006 à 17:39
Le code est faux et ne trie pas correctement.
Voici une version correcte permettant en plus d'avoir x colonnes et de préciser un sens de tri


Function TriTableau (LeTableau, k, asc)
' Permet renvoyer un tableau Trié issu du tableau transmis en
' paramêtre (N lignes, x colonnes) et avec le N° de la colonne à trier k
Dim Ligne_Tampon(3)
Dim Tableau_Tampon
Max = Ubound(LeTableau)
NbColonnes = Ubound(LeTableau, 2)
If k <= nbColonnes Then
ReDim Tableau_Tampon(Max, 3)
i = 0
Do until i = Max
' Chaque élément est comparé à celui qui lui est supérieur dans le classement
j=0
Do until j = Max
Dim test
If asc = "ASC" Then
test = LeTableau(j, k) > LeTableau((j + 1), k)
Else
test = LeTableau(j, k) < LeTableau((j + 1), k)
End if
If (test) Then
' l'élément J est plus important que l'élément J + 1 alors on les intervertit
For indexColonne = 0 To nbColonnes
Ligne_Tampon(indexColonne) = LeTableau(j,indexColonne)
LeTableau(j,indexColonne) = LeTableau((j + 1),indexColonne)
LeTableau((j + 1),indexColonne) = Ligne_Tampon(indexColonne)
Next
End If
j=j+1
loop
i=i+1
loop
End if
TriTableau = LeTableau
End Function

Pour l'appeler :
TableauApresTrie = TriTableau(TableauTrie, 1, "DESC")
ou
TableauApresTrie = TriTableau(TableauTrie, 1, "ASC")
cs_Mercury Messages postés 329 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 octobre 2005
23 avril 2002 à 17:07
Vraiment intéressant. Excellent code.

@+

Mercury
Rejoignez-nous