Filtre tableau multidimension VBA
c
Bonjour,
Je cherche à trier un tableau de type public à 3 dimensions
Public Tableau
ReDim Tableau(8, 60, 2)
Comment le trier de manière croissante sur la dimension1 (taille8) et décroissante sur la dimension 3 (taille2) stp ?
Mon but est de garder la première colonne dans l'ordre croissant, comme à l'origine, tout en triant la 3e colonne dans l'ordre décroissant
Par exemple si c’était dans une feuille de classeur:
Merci d'avance pour votre aide
Cette macro devrait faire l'affaire si j'ai bien compris le besoin.
Option Explicit
Sub ordreAlpha()
Dim ordreA() As String, ordreZ() As String, liste() As String
Dim index As Integer
Dim min As String, max As String
Dim i As Integer, j As Integer, nl As Integer
nl = Sheets("Feuil1").Cells(Columns.Count, 1).End(xlUp).Row ' dernière ligne occupée de la colonne 1 ("A")
Cells(1, 2) = "Ordre alphabétique"
Cells(1, 3) = "Ordre alphabétique inverse"
ReDim ordreA(nl - 2) ' Les tableaux commencent à 1 au lieu de 0
ReDim ordreZ(nl - 2)
ReDim liste(nl - 2)
' Ordre alphabétique
For i = 2 To nl
liste(i - 2) = Cells(i, 1)
Next i
For i = 0 To UBound(liste)
min = "zzzz"
For j = 0 To UBound(liste)
If liste(j) < min Then
min = liste(j)
index = j
End If
Next j
ordreA(i) = min
Cells(i + 2, 2) = ordreA(i)
liste(index) = "zzzz"
Next i
' Ordre alphabétique inverse
For i = 2 To nl
liste(i - 2) = Cells(i, 1)
Next i
For i = 0 To UBound(liste)
max = ""
For j = 0 To UBound(liste)
If liste(j) > max Then
max = liste(j)
index = j
End If
Next j
ordreZ(i) = max
liste(index) = ""
Cells(i + 2, 3) = ordreZ(i)
Next i
End Sub