cs_Mercury
Messages postés329Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention 7 octobre 2005
-
23 avril 2002 à 17:07
sbicha
Messages postés1Date d'inscriptionlundi 18 juillet 2005StatutMembreDernière intervention22 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.
sbicha
Messages postés1Date d'inscriptionlundi 18 juillet 2005StatutMembreDernière intervention22 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és17Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention24 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és17Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention24 août 2006 19 mai 2006 à 11:57
Excellent le dernier code! Merci beacoup
gkuhmel
Messages postés4Date d'inscriptionmardi 24 février 2004StatutMembreDernière intervention25 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és329Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention 7 octobre 2005 23 avril 2002 à 17:07
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