Comment générer des nombres aléatoires dans VBA ?
Dans VBA, vous pouvez utiliser différentes manières pour générer un nombre aléatoire dans Excel, et dans cet article, nous les examinerons toutes une par une.
Fonction RND
Pour générer un nombre aléatoire, en VBA, il existe une fonction appelée RND . Cette fonction signifie aléatoire et lorsque vous utilisez cette fonction dans le code, elle renvoie un nombre aléatoire entre 0 et 1. Dans RND, vous n’avez pas besoin de spécifier d’argument.
Range("A1") = Rnd()
Le code ci-dessus l’utilise pour obtenir un nombre aléatoire dans l’A1 et il a renvoyé 0,705547521.
Mais lorsque vous l’utilisez pour une plage entière, il renvoie le même nombre aléatoire dans toute la plage et cela le rend nul pour être utilisé pour générer des nombres aléatoires plus d’une fois.
Maintenant, ici, cela n’a pas de sens de l’utiliser, n’est-ce pas ? Mais il existe une solution que vous pouvez utiliser, FOR NEXT LOOP .
Dans le code ci-dessus, vous avez une boucle qui parcourt 10 cellules (une par une) à partir de la cellule sélectionnée et ajoute un nombre aléatoire.
Voici le code complet :
Sub vba_random_number()
Dim i As Long
i = 10
For i = 1 To i
ActiveCell.Value = Rnd()
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Nombre aléatoire entre deux nombres
Si vous souhaitez générer un nombre aléatoire entre deux nombres définis, dans ce cas, vous devez écrire du code en utilisant deux fonctions VBA ( RND + INT ). Le code de cette formule serait comme ci-dessous.
Sub vba_random_number()
Dim myRnd As Integer
myRnd = Int(2 + Rnd * (45 - 10 + 1))
Range("A1") = myRnd
End Sub
Lorsque vous exécutez cette macro , RND utilise le nombre maximum et le nombre minimum que vous avez définis pour générer le nombre aléatoire et INT en supprime la décimale.
Utilisation des fonctions de feuille de calcul dans un code VBA pour générer un nombre aléatoire
Dans VBA, vous pouvez accéder aux fonctions de feuille de calcul et les utiliser pour obtenir un résultat en spécifiant les arguments. Deux fonctions de la feuille de calcul peuvent vous aider à obtenir un nombre aléatoire dans le résultat.
- RandEntre
- RandTableau
Avant d’utiliser ces fonctions, assurez-vous de comprendre les arguments que vous devez définir. Maintenant, dans le code ci-dessous, vous avez RANDBETWEEN qui génère un nombre aléatoire entre deux nombres.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Ici, le nombre maximum est 2000 et le nombre minimum est 1000. De la même manière, vous pouvez utiliser le RANDARRAY qui est une fonction de tableaux dynamiques.
Voici le code.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Si vous regardez la syntaxe du RANDARRAY, vous constaterez que vous pouvez entrer des nombres aléatoires dans une plage entière, ce qui n’est pas possible avec toutes les méthodes dont nous avons discuté ci-dessus.