Comment trier un tableau en VBA ?

Pour trier un tableau dans VBA, vous devez écrire un code dans lequel vous pouvez faire correspondre le premier élément du tableau avec le suivant et les échanger si le premier doit venir avant. Vous avez besoin d’une boucle FOR (For Next) pour cela et de la fonction UCASE .

Dans ce tutoriel, nous verrons les deux manières (AZ et ZA) de trier les éléments d’un tableau.

Trier un tableau (AZ)

Dans le code ci-dessous, vous avez un tableau avec cinq éléments, et ces éléments ont des valeurs allant de E à A, et maintenant nous devons trier dans l’ordre AZ.

trier-un-tableau-1

Étapes pour trier un tableau

  1. Tout d’abord, vous devez écrire une boucle imbriquée avec For Next en utilisant les limites supérieure et inférieure du tableau.
  2. Après cela, dans cette boucle, vous devez utiliser l’ instruction VBA IF pour comparer les deux éléments.
  3. À partir de là, si le premier élément doit venir avant l’élément suivant, vous devez les échanger en sauvegardant leurs valeurs dans des variables.
  4. À la fin, utilisez le mot-clé « Suivant » pour boucler la boucle.
Option Base 1
Sub vba_sort_array_a_to_z()

Dim myArray() As Variant
ReDim myArray(5)
Dim i As Integer
Dim j As Integer
Dim Temp As String

myArray(1) = "E"
myArray(2) = "D"
myArray(3) = "C"
myArray(4) = "B"
myArray(5) = "A"

'sorting array from A to Z
For i = LBound(myArray) To UBound(myArray)
    For j = i + 1 To UBound(myArray)
        If UCase(myArray(i)) > UCase(myArray(j)) Then
            Temp = myArray(j)
            myArray(j) = myArray(i)
            myArray(i) = Temp
        End If
    Next j
Next i

Debug.Print myArray(1)
Debug.Print myArray(2)
Debug.Print myArray(3)
Debug.Print myArray(4)
Debug.Print myArray(5)

End Sub

Assurez-vous d’activer la fenêtre Exécution pour y voir le résultat.

Trier un tableau (ZA)

De la même manière, vous pouvez trier de ZA. Dans la méthode précédente, nous avons comparé le premier élément avec l’élément suivant dans la séquence, mais dans ce code, vous devez faire le contraire. Donc, si le deuxième élément (le suivant dans l’ordre) est supérieur au premier, le code les échangera.

Option Base 1
Sub vba_sort_array_z_to_a()

Dim myArray() As Variant
ReDim myArray(5)
Dim i As Integer
Dim j As Integer
Dim Temp As String

myArray(1) = "A"
myArray(2) = "B"
myArray(3) = "C"
myArray(4) = "D"
myArray(5) = "E"

'sorting array from A to Z
For i = LBound(myArray) To UBound(myArray)
    For j = i + 1 To UBound(myArray)
        If UCase(myArray(i)) < UCase(myArray(j)) Then
            Temp = myArray(j)
            myArray(j) = myArray(i)
            myArray(i) = Temp
        End If
    Next j
Next i

Debug.Print myArray(1)
Debug.Print myArray(2)
Debug.Print myArray(3)
Debug.Print myArray(4)
Debug.Print myArray(5)

End Sub

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *