Trier les nombres dans Excel VBA - Macros Excel faciles

Table des matières

Ci-dessous, nous examinerons un programme en Excel VBA ce trie les nombres.

Situation:

Placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivantes :

1. Tout d'abord, nous déclarons trois variables de type Integer et un objet Range.

Dim i comme entier, j comme entier, temp comme entier, rng comme plage

2. Nous initialisons l'objet Range rng avec les nombres de la colonne A. Nous utilisons pour cela la propriété CurrentRegion. CurrentRegion est utile quand on ne connaît pas à l'avance les limites exactes d'une plage (on veut que ce programme fonctionne pour 9 nombres mais aussi pour 90 nombres).

Définir rng = Range("A1").CurrentRegion

3. Nous commençons deux boucles For Next.

Pour i = 1 To rng.Count
Pour j = i + 1 To rng.Count

Explication : rng.Count est égal à 9, donc les deux premières lignes de code se réduisent à For i = 1 à 9 et For j = i + 1 à 9. Pour i = 1, j = 2, 3,… , 8 et 9 sont vérifiés .

4. Pour trier les numéros correctement, nous comparons le premier numéro avec le numéro suivant. Si le nombre suivant est plus petit, nous échangeons les nombres. Ajoutez l'instruction If Then suivante.

Si rng.Cells(j) < rng.Cells(i) Alors
Fin si

Si la déclaration ci-dessus est vraie, nous échangeons les nombres.

Par exemple : pour i = 1 et j = 2, les nombres 2 et 10 sont comparés. La déclaration ci-dessus n'est pas vraie. Ainsi, pas besoin d'échanger les numéros. Excel VBA incrémente j de 1 et répète les lignes de code pour i = 1 et j = 3. Vous pouvez facilement voir que 5 est supérieur à 2, donc toujours pas besoin d'échanger les nombres. Nous obtenons le même résultat pour j = 4, j = 5 et j = 6. Lorsque nous arrivons à j = 7, la déclaration ci-dessus est vraie puisque 1 est plus petit que 2.

5. Nous échangeons les numéros. Nous stockons temporairement un nombre dans temp, afin qu'Excel VBA puisse échanger les nombres correctement. Ajoutez les lignes de code suivantes dans l'instruction If.

'échanger les numéros
temp = rng.Cells(i)
rng.Cellules(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Nous fermons la deuxième boucle For Next (En dehors de l'instruction If).

j suivant

Pour i = 1 et j = 7, Excel VBA a échangé les nombres. Cela signifie que nous obtenons 1 à la première position et 2 à la position 7. Maintenant que nous avons 1 à la première position, nous allons comparer cette valeur avec 5 (pour j = 8) et 4 (pour j = 9). Il n'est pas nécessaire d'échanger les nombres (1 est le plus petit nombre). De cette façon, Excel VBA obtient (pour i = 1) le plus petit nombre en première position. Pour obtenir le deuxième plus petit nombre à la deuxième position, Excel VBA répète exactement les mêmes étapes pour i = 2. Pour obtenir le troisième plus petit nombre à la troisième position, Excel VBA répète exactement les mêmes étapes pour i = 3, etc.

7. Fermez la première boucle For Next (En dehors de l'instruction If).

Ensuite je

8. Testez votre programme.

Résultat:

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

wave wave wave wave wave