Bonjour,
J'ai recupere une fonction de trie d'un tableau avec comme parametre le tableau , la colonne a triée et le sens du trie.
Mais qd j'ai un tableau dont le nombre de colonnes est supérieur à 2 ->
ca marche pas, il dit qu'il ya un probleme "indice en dehors de la plage" ou "type incompatible".
j'ai par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 '-----Trie d'un tableau en fonction de la colonne et du sens de trie ' TableauApresTrie = TriTableau(tp, 2, "DESC") OU TableauApresTrie = TriTableau(tp, 2, "ASC") 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 = 1 Do until i = Max ' Chaque élément est comparé à celui qui lui est supérieur dans le classement j= 1 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) 'LIGNE 2 End if If (test) Then ' l'élément J est plus important que l'élément J + 1 alors on les intervertit For indexColonne = 1 To nbColonnes Ligne_Tampon(indexColonne) = LeTableau(j,indexColonne) 'LIGNE 1 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
Par contre si je mets la colonne 11 à sélectionner, pas d'erreur mais me le trie pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 dim tp(5,2),tab(4,11) tp(1,1) = "cas 1" tp(1,2) = 10 tp(2,1) = "cas 2" tp(2,2) = 15 tp(3,1) = "cas 3" tp(3,2) = 12 tab(1,1) = "cas 1" tab(1,...) = .... tab(1,10) = 10 tab(2,1) = "cas 2" tab(2,...) = ... tab(2,10) = 15 tab(3,1) = "cas 3" tab(3,...) = ... tab(3,10) = 12 trie1 = TriTableau (tp,2,"DESC") 'ca passe ca trie2 = TriTableau (tab,10,"DESC")' erreur ici = "Indice en dehors de la plage: 'indexColonne' " LIGNE 1 'si je mets 9 -> "Type incompatible: LIGNE 2"
Je ne comprends pas pourquoi??
Merci pour votre aide,
Notes: je commence mes tableaux à 1 et non à 0.
Partager