Table des matières
Ce tutoriel montrera comment trier les valeurs dans un tableau en VBA
Tri d'un tableau unidimensionnel à l'aide d'une boucle
Le tri d'un tableau nécessite un peu de manipulation de données à l'aide de boucles, de variables et de tableaux temporaires.
- Vous devez d'abord remplir le tableau avec vos valeurs
- Vous devez ensuite parcourir le tableau deux fois ! Une fois pour obtenir une valeur du tableau d'éléments actuel, et le moment où il est encore dans cette boucle, pour obtenir la valeur de l'élément suivant dans le tableau.
- Vous devez ensuite comparer les éléments - et déplacer le 2ème à la position du premier si le 2ème est par ordre alphabétique AVANT le 1er.
L'exemple ci-dessous illustre cette procédure.
1234567891011121314151617181920212223 | Sous-TrierUnTableau()Dim j'aussi longtemps'Définir le tableauDim strName() en tant que varianteDim Temp comme variante'remplir le tableaustrName() = Array("Bob Smith", "John Davies", "Fred Jones", "Steve Jenkins", "Bob Williams")'boucle à travers la limite de l'arry et obtenez le prénomPour i = LBound(strName) À UBound(strName) - 1'bouclez à nouveau et vérifiez si le nom suivant est alphabétiquement avant ou après l'originalPour j = i + 1 à UBound(strName)Si UCase(strName(i)) > UCase(strName(j)) Alors'si le nom doit être déplacé avant le nom précédent, ajoutez à un tableau temporaireTemp = strName(j)'échange les nomsstrName(j) = strName(i)strName(i) = TempFin sij suivantEnsuite je'Sortir le tableau via une boîte de messageMsgBox Join(strName(), vbCrLf)Fin du sous-marin |
Si vous exécutez cette procédure, vous obtiendrez la boîte de message suivante.
Vous pouvez également trier le tableau dans l'autre sens - par exemple : de Z à A en changeant cette ligne de code
1 | Si UCase(strName(i)) > UCase(strName(j)) Alors |
à cette ligne de code
1 | Si UCase(strName(i)) < UCase(strName(j)) Alors |
Vous obtiendrez alors la boîte de message suivante.