![](https://excelcorpo.com/wp-content/uploads/2021/09/trivba2.1.jpg)
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 As Integer, j As Integer, tempcell As Integer, plagecell As Range
2. Nous initialisons l’objet Range rng avec les chiffres de la colonne A. Nous utilisons
la propriété CurrentRegion pour cela. CurrentRegion est utile lorsque nous ne connaissons pas à l’avance les limites exactes d’une plage (nous voulons que ce programme fonctionne pour 9 nombres mais aussi pour 90 nombres).
Set plagecell = Range("A1").CurrentRegion
3. Nous commençons deux boucles For Next. Pour i = 1 Au compte plagecell
For i = 1 To plagecell.Count
For j = i + 1 To plagecell.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. For i = 1, j = 2, 3, …, 8 and 9 sont vérifiés.
4. Pour trier correctement les nombres, nous comparons le premier nombre avec le nombre suivant. Si le nombre suivant est plus petit, nous échangeons les nombres. Ajoutez l’instruction If Then suivante.
If plagecell.Cells(j) < plagecell.Cells(i) Then
End If
Si la déclaration ci-dessus est vraie, nous échangeons les chiffres.
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 chiffres. 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. On obtient le même résultat pour j = 4, j = 5 et j = 6. Quand on arrive à j = 7, l’énoncé ci-dessus est vrai puisque 1 est inférieur à 2.
5. Nous échangeons les chiffres. Nous stockons temporairement un numéro dans temp, afin qu’Excel VBA puisse échanger les numéros correctement. Ajoutez les lignes de code suivantes dans l’instruction If.
tempcell = plagecell.Cells(i)
plagecell.Cells(i) = rng.Cells(j)
plagecell.Cells(j) = tempcell
6. Nous fermons la deuxième boucle For Next (en dehors de l’instruction If).
Next j
Pour i = 1 et j = 7, Excel VBA a échangé les chiffres. 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 chiffres (1 est le plus petit nombre). De cette façon, Excel VBA obtient (pour i = 1) le plus petit nombre à la 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).
Next i
8. Testez votre programme.
Résultat:
![](https://excelcorpo.com/wp-content/uploads/2021/09/trivba2.2.jpg)
Comment effectuer un tri aléatoire avec Excel VBA
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.
2. Nous initialisons l’objet Range rng avec les chiffres de la colonne A. Nous utilisons
la propriété CurrentRegion pour cela. CurrentRegion est utile lorsque nous ne connaissons pas à l’avance les limites exactes d’une plage (nous voulons que ce programme fonctionne pour 9 nombres mais aussi pour 90 nombres).
3. Nous commençons deux boucles For Next. Pour i = 1 Au compte plagecell
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. For i = 1, j = 2, 3, …, 8 and 9 sont vérifiés.
4. Pour trier correctement les nombres, nous comparons le premier nombre avec le nombre suivant. Si le nombre suivant est plus petit, nous échangeons les nombres. Ajoutez l’instruction If Then suivante.
Si la déclaration ci-dessus est vraie, nous échangeons les chiffres.
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 chiffres. 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. On obtient le même résultat pour j = 4, j = 5 et j = 6. Quand on arrive à j = 7, l’énoncé ci-dessus est vrai puisque 1 est inférieur à 2.
5. Nous échangeons les chiffres. Nous stockons temporairement un numéro dans temp, afin qu’Excel VBA puisse échanger les numéros correctement. Ajoutez les lignes de code suivantes dans l’instruction If.
6. Nous fermons la deuxième boucle For Next (en dehors de l’instruction If).
Pour i = 1 et j = 7, Excel VBA a échangé les chiffres. 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 chiffres (1 est le plus petit nombre). De cette façon, Excel VBA obtient (pour i = 1) le plus petit nombre à la 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).
8. Testez votre programme.
Résultat:
Initiation à Excel
Fonctions Excel
Excel VBA
Macros VBA Utiles
Plus d'outils
Sur Facebook
Sur YouTube