Sans analyser ton code s'il ne trie que la 3ème ligne c'est que tu ne permutes pas les éléments des autres lignes en même temps...
Ceci dit rien ne t'empeche d'utiliser une feuille pour y déposer ton tableau et utiliser le .sort qui sera toujours plus performant que 2 ou 3 boucles imbriquées contenant des tests.
Ex:
Sub test()
Dim tableau3
ReDim tableau3(1 To 3, 1 To 20)
' remplir tableau3 avec ses valeurs
'
' on dépose le tableau
[Feuil2!A1:C20] = tableau3
' on trie décroissant sur la ligne 3
[Feuil2!A1:C20].Sort Key1:=Range("A3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
' et on récupère le résultat
tableau3 = [Feuil2!A1:C20].Value
End Sub
A moins que ce ne soit pour te perfectionner en vba...
eric