Tableau de tri VBA

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.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave