0/5 (5 avis)
Snippet vu 26 833 fois - Téléchargée 38 fois
'----------------------------------------------------------------------------------------------------- Function TriTableau (LeTableau, k) ' Permet renvoyer un tableau Trié issu du tableau transmis en paramêtre (N lignes, 3 colonnes) et avec le N° de la colonne à trier k Dim Ligne_Tampon (3) Dim Tableau_Tampon Max = Ubound(LeTableau) ReDim Tableau_Tampon(Max, 3) Do until i = Max ' Chaque élément est comparé à celui qui lui est supérieur dans le classement j=0 Do until j = Max If (LeTableau(j, k) > LeTableau((j + 1), k)) Then ' l'élément J est plus important que l'élément J + 1 alors on les intervertit Ligne_Tampon(1) = LeTableau(j,1) Ligne_Tampon(2) = LeTableau(j,2) Ligne_Tampon(3) = LeTableau(j,3) Tableau_Tampon(j,1) = LeTableau((j + 1),1) Tableau_Tampon(j,2) = LeTableau((j + 1),2) Tableau_Tampon(j,3) = LeTableau((j + 1),3) Tableau_Tampon((j + 1),1) = Ligne_Tampon(1) Tableau_Tampon((j + 1),2) = Ligne_Tampon(2) Tableau_Tampon((j + 1),3) = Ligne_Tampon(3) Else Tableau_Tampon(j,1) = LeTableau(j,1) Tableau_Tampon(j,2) = LeTableau(j,2) Tableau_Tampon(j,3) = LeTableau(j,3) Tableau_Tampon((j + 1),1) = LeTableau((j+1),1) Tableau_Tampon((j + 1),2) = LeTableau((j+1),2) Tableau_Tampon((j + 1),3) = LeTableau((j+1),3) End If j=j+1 loop i=i+1 loop TriTableau = Tableau_Tampon End Function '----------------------------------------------------------------------------------------------------- 'A appeler avec dans le corps de la page : Dim TableauTrie Redim TableauTrie (NbLigne, 3) TableauTrie = TriTableau (tableauNonTrie, 1)
22 août 2006 à 15:51
Je voulais juste vous remercier pour cette fonction qui m'a été très utile et très efficace.
Bonnes continuations ;o)
19 mai 2006 à 16:50
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,
19 mai 2006 à 11:57
25 janv. 2006 à 17:39
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")
23 avril 2002 à 17:07
@+
Mercury
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.