Randomiser VBA

Randomize Statement dans VBA

L' instruction VBA Randomize est une instruction simple à une seule ligne que nous ajoutons avant d'appliquer la fonction RND. Chaque fois qu'un classeur est rouvert, l'instruction Randomize fournit un nouveau numéro de départ à la fonction RND en fonction de l'heure système de l'ordinateur.

Avant de parler de l'instruction Randomize, permettez-moi de vous présenter une fonction RND simple avec VBA.

En tant que fonction de feuille de calcul «RAND», dans VBA «RND» générera également des nombres aléatoires supérieurs à 0 mais inférieurs à 1.

Jetez maintenant un œil à la syntaxe de la fonction «RND».

[Number]: Nous pouvons transmettre l'argument de trois manières.

  • Si nous transmettons le nombre <0, il continue à générer le même nombre aléatoire à chaque fois.
  • Si nous passons le nombre à 0, il répétera le numéro le plus récent qu'il a donné.
  • Si nous passons le nombre> 0, cela continue de vous donner différents nombres aléatoires, c'est-à-dire le prochain nombre aléatoire de la séquence.

Exemple

Pour un exemple, regardez le code ci-dessous.

Code:

 Sous RND_Example () Debug.Print Rnd End Sub 

Lorsque j'exécute le code dans la fenêtre immédiate, je peux voir le numéro ci-dessous.

De même, lorsque j'exécute ce code 3 fois de plus, je peux voir les chiffres ci-dessous.

Maintenant, je vais fermer le classeur et le rouvrir.

Maintenant, je vais revenir à la fenêtre de l'éditeur Visual Basic.

Maintenant, la fenêtre immédiate est vide et propre.

Maintenant encore, je vais exécuter le code quatre fois et voir quels sont les nombres que nous obtiendrons dans la fenêtre immédiate.

Nous avons les mêmes chiffres que ceux obtenus ci-dessus.

Cela ne ressemble pas à un nombre aléatoire car à chaque fois que nous rouvrons le fichier, nous avons tendance à obtenir les mêmes nombres en partant de zéro.

Alors, comment générer des nombres aléatoires, que le classeur soit rouvert ou non?

Nous devons utiliser l'instruction «Randomize».

Comment utiliser l'instruction VBA Randomize?

Vous pouvez télécharger ce modèle Excel de randomisation VBA ici - Modèle Excel de randomisation VBA

Exemple 1

Pour obtenir des nombres aléatoires, tout ce que nous devons faire est d'ajouter la simple ligne «Randomize» avant la fonction RND.

Code:

 Sous Randomize_1 () Randomize Debug.Print Rnd End Sub 

Maintenant, je vais exécuter le code 4 fois et voir ce que j'obtiens.

Il a généré les numéros ci-dessus dans ma fenêtre locale.

Maintenant, je vais fermer le fichier et le rouvrir une fois de plus.

Comme d'habitude, nous commençons par une table rase dans la fenêtre Visual Basic.

Maintenant, je vais à nouveau exécuter le code et voir quels nombres nous obtenons cette fois.

Sensationnel!!! Nous avons eu des chiffres différents cette fois-ci.

Depuis que nous avons ajouté l'instruction Randomize avant la fonction RND, nous obtenons différents nombres aléatoires à chaque fois que nous rouvrons le fichier.

Cela ressemble à un nombre aléatoire, n'est-ce pas ???

Exemple # 2

Nombres aléatoires supérieurs à un

Comme nous l'avons vu, la fonction «RND» peut générer des nombres de 0 à 1 uniquement. Mais pour générer des nombres supérieurs à un nombre aléatoire, nous devons utiliser «RANDOM BETWEEN» qui est disponible avec la classe de fonctions de feuille de calcul.

Donc, pour générer des nombres aléatoires supérieurs à un, nous devons utiliser le code ci-dessous.

Code:

 Sous Randomize_2 () Randomize Debug.Print Rnd * 100 End Sub 

Maintenant, je vais exécuter le code et voir ce que nous obtenons.

Comme ça, nous pouvons utiliser l'instruction «Randomize» dans VBA pour générer des nombres aléatoires à chaque fois que nous rouvrons le fichier Excel.