Nombres aléatoires VBA

Nombres aléatoires Excel VBA

Pour générer des nombres aléatoires dans vba, nous avons une fonction intégrée appelée RND . Il suffit d'un argument un nombre pour générer des nombres aléatoires et c'est également un paramètre facultatif. Cela créera des nombres aléatoires supérieurs à 0 et inférieurs à 1.

Cela fonctionne exactement de la même manière que la fonction Excel «RAND». Comme je l'ai dit dans la fonction de feuille de calcul «RAND», dans VBA aussi, nous pouvons générer 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.

Comment générer des nombres aléatoires à l'aide du code VBA?

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

Exemple 1

Nous allons maintenant voir l'exemple simple d'utilisation de la fonction «RND». Suivez les étapes ci-dessous pour écrire vous-même le code VBA.

Étape 1: Déclarez la variable comme «Integer» dans VBA

Code:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Étape 2: Attribuez maintenant la valeur à la variable «k» à la fonction « RND ».

Code:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub 

Étape 3: Afficher la valeur renvoyée par la variable «k» dans la boîte de message .

Code:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub 

Maintenant, exécutez la macro Excel et voyez quel est le résultat.

Regardez ce qui s'est passé.

Il affiche le résultat comme 1 où la fonction «RND» ne peut renvoyer que des nombres supérieurs à zéro mais inférieurs à 1.

Vous devez penser à ce qui ne va pas ici.

Le problème ici est le type de type de données que nous avons attribué à la variable «k».

Si vous regardez en arrière la variable que nous avons déclarée, nous avons attribué le type de données Integer. Puisque nous avons attribué à la variable Integer, elle ne peut afficher que les nombres entiers entre -32768 et 32767.

Chaque fois que RND renvoie le nombre décimal, VBA convertit le nombre décimal en entier le plus proche, c'est-à-dire 1.

Donc, pour que la formule fonctionne correctement, déclarez la variable comme « Double ».

«Double» est le type de données dans VBA qui peut contenir des valeurs décimales.

Code:

 Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub 

Maintenant, le code et voyez quel est le résultat.

Cliquez sur ok et exécutez encore une fois et voyez le résultat

Cette fois, nous avons obtenu un résultat différent. Puisque «RND» est une fonction volatile par nature, il reproduit différents résultats à chaque fois que vous exécutez le code.

Exemple # 2 - Obtenir le même nombre aléatoire à chaque fois

Comme nous l'avons vu l'exemple précédent, la fonction «RND» reproduit le résultat à chaque exécution du code. Afin d'obtenir le même nombre aléatoire, encore et encore, nous devons passer l'argument comme zéro.

Code:

 Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub 

Cela produira le même nombre encore et encore lorsque nous exécuterons le code.

Exemple # 3 - Générer un nombre aléatoire entier

Nous pouvons également générer des nombres entiers en utilisant une autre fonction VBA ou d'autres nombres d'entrée. Pour un exemple, regardez le code ci-dessous.

Code:

 Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub 

Ce code générera des nombres entiers aléatoires avec des points décimaux chaque fois que nous exécutons le code.

Si vous regardez les nombres entiers sans points décimaux, nous pouvons utiliser le code ci-dessous.

Code:

 Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub 

Cela continuera à générer les nombres entiers de 1 à 100.