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.

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:

  

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x