Trier un tableau vba
Dan457
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
j'ai défini un tableau avec la fonction type et j'aimerais trier ce tableau sur la premiere valeur du type.
j'aimerais trier ce tableau (ascending) en utilisant le composant department.
Merci pour votre aide
j'ai défini un tableau avec la fonction type et j'aimerais trier ce tableau sur la premiere valeur du type.
Type t_Out_Array
Cost_Center As String
NT_Account As String
Last_Name As String
First_Name As String
Group As String
Util_Status As String
Department As String
End Type
Public a_Out_Array(5000) As t_Out_Array
j'aimerais trier ce tableau (ascending) en utilisant le composant department.
Merci pour votre aide
A voir également:
- Vba trier tableau 2 dimensions
- Trier un tableau excel - Guide
- Tableau word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tableau ascii - Guide
- Tableau croisé dynamique - Guide
1 réponse
Bonjour,
Un exemple de tri rapide (2 colonnes) à adapter à N colonnes (auteurs: Zon & Ti) par récursivité
Un exemple de tri rapide (2 colonnes) à adapter à N colonnes (auteurs: Zon & Ti) par récursivité
Pour un tableau à 2 dimensions, pratique pour trier une plage de cellules par exemple:
T=range("A1:C50000").value
'On veut trier le tableau sur la colonne B:
Trimulti T,2,lbound(T),Ubound(T)
Sub TriMulti(Tablo, Col As Byte, Min&, Max&) 'ZOn
Dim I&, J&, K&, M, Chaine
I = Min
J = Max
M = Tablo((Min + Max) / 2, Col)
While (I <= J)
While (Tablo(I, Col) < M And I < Max)
I = I + 1
Wend
While (M < Tablo(J, Col) And J > Min)
J = J - 1
Wend
If (I <= J) Then
For K = LBound(Tablo, 2) To UBound(Tablo, 2)
Chaine = Tablo(I, K)
Tablo(I, K) = Tablo(J, K)
Tablo(J, K) = Chaine
Next K
I = I + 1
J = J - 1
End If
Wend
If (Min < J) Then TriMulti Tablo, Col, Min, J
If (I < Max) Then TriMulti Tablo, Col, I, Max
End Sub
Je la garde celle-ci.
Très efficace, rapide, claire, précise...
Impeccable pour trier des données.
Testée sur mon pc, elle met moins de 6 secondes pour le tri suivant :
t = Range("A1:L50000").Value TriMulti t, 2, LBound(t), UBound(t)What else?
Merci et bonne journée
OK, mais je n'ai fait qu'un copier coller !
petit supplément gratuit pour un tableau à 1 dimension auteur: Ti
Oui mais d'une super fonction...
Merci pour le complément d'info.
Jusqu'ici j'utilisais le Quick Sort de Jacques Boigonthier qui n'est pas mal non plus...
A++