Fonction de tri d'une variable tableau en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sparrow

XLDnaute Nouveau
Bonjour,

Je recherche si une fonction de tri est applicable à une variable tableau défini par le mot clé DIM en VBA Excel 2010.

J'ai tenté le code suivant :
Sub SortDemo()
Dim a(10), l(10)
a(1) = "N"
a(2) = "A"
a(3) = "T"
a.Sort
End Sub

A l'exécution, une erreur survient : Erreur de compilation - Qualificateur incorrect.
D'où ma question : existe-t-il une fonction qui permet de trier le tableau a et quelle est sa syntaxe ?

Merci.
 
Dernière édition:
Re : Fonction de tri d'une variable tableau en VBA

Synthèse de tris avec Quick-Sort, ArrayList, SortedList (10.000 items).

Les tests ont été effectués avec Excel 2010.
Avec Excel 2003, les temps diminuent mais pas en même proportion:

-0,36 s --> 0,18 s Quick Sort sans doublons (gain de 50%)
-2,50 s --> 2,40 s ArrayList sans doublons (gain de 10%)

Cf PJ

http://boisgontierjacques.free.fr/fichiers/Cellules/TriDivers.xls

JB
 

Pièces jointes

Dernière édition:
Re : Fonction de tri d'une variable tableau en VBA

>Post #7 : Cette solution fonctionne-t-elle aussi avec un tableau à plusieurs dimensions, du type DIM tab (100, 2, 2) ?

Tri tableau 2D avec SortedList

Code:
Sub TriTableau2D2Critères()
 Dim clé() As String, index() As Long
 a = [A2:D7].Value
 Dim b()
 ReDim b(LBound(a) To UBound(a), LBound(a, 2) To UBound(a, 2))
 Set oSortedList = CreateObject("System.Collections.Sortedlist")
 For i = LBound(a) To UBound(a)
   oSortedList.Add a(i, 1) & a(i, 2), i
 Next i
 For lig = LBound(a) To UBound(a)
  For col = LBound(a, 2) To UBound(a, 2)
    b(lig, col) = a(oSortedList.GetByIndex(lig - 1), col)
  Next col
 Next lig
[H2].Resize(UBound(b), UBound(b, 2)).Value2 = b
End Sub

JB
 

Pièces jointes

Dernière édition:
Re : Fonction de tri d'une variable tableau en VBA

Bonsoir,

L'objet SortedList n'est pas présent sur tous les PC (et ne doit pas être présent sur Mac)
Voici un module de classe en PJ qui simule SortedList (Il est 2 fois + rapide : 0,28s pour 10.000 lignes).
En outre, il accepte les doublons. Si on veut supprimer ces derniers, on peut utiliser Dictionary qui est très rapide.

Code:
Sub TriSortedList2Col()
  Set SL = New SListe
  a = Range("A2:B" & [A65000].End(xlUp).Row).Value
  For i = LBound(a) To UBound(a)
    SL.Ajout(a(i, 1)) = a(i, 2)
  Next i
  retour = SL.Tri               ' tri objet SL
  [D2].Resize(SL.Count, 1) = SL.ListeCles
  [E2].Resize(SL.Count, 1) = SL.ListeItems
End Sub

JB
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour