5 façons de générer des nombres aléatoires dans Excel

Tous les utilisateurs n’ont pas besoin de nombres aléatoires dans Excel. La plupart des gens travaillent avec des nombres et des formules fixes et n’ont pas besoin que des nombres aléatoires apparaissent dans leurs rapports.

Cependant, un générateur de nombres aléatoires a une utilité considérable lorsqu’on travaille avec différents scénarios sur un ensemble de données ou lorsqu’on effectue diverses analyses statistiques.

Un modèle financier peut utiliser une simulation stochastique qui dépend des probabilités. Le modèle peut devoir être exécuté des milliers de fois, mais avec le générateur de nombres aléatoires fournissant les paramètres de chaque simulation.

Quel que soit votre besoin de nombres aléatoires, Excel dispose de plusieurs moyens pour les générer.

Dans ce post, je vais vous montrer toutes les méthodes que vous pouvez utiliser pour insérer des nombres aléatoires dans vos classeurs.

Générer des nombres aléatoires avec la fonction RAND

La première méthode que je vais vous montrer est la plus simple pour générer des valeurs aléatoires dans Excel.

Il existe une fonction RAND très simple qui ne nécessite aucun paramètre et qui génère un nombre aléatoire entre 0 et 1.

Syntaxe de la fonction RAND

= RAND ( )

Cette fonction n’a pas d’arguments obligatoires ou facultatifs. La fonction est toujours saisie avec un ensemble vide de parenthèses.

Cette fonction génère un nombre aléatoire décimal compris entre 0 et 1, mais n’incluant ni 0 ni 1.

Des valeurs répétées sont possibles mais peu probables puisque la fonction RAND produit des nombres à partir d’une plage continue de nombres.

Les valeurs renvoyées suivent une distribution uniforme. Cela signifie que tout nombre compris entre 0 et 1 a la même probabilité d’être renvoyé.

Générer des nombres aléatoires entre deux nombres quelconques

Un nombre décimal entre 0 et 1 peut ne pas être très utile si vous avez besoin de nombres entre 1 et 10.

Mais vous pouvez utiliser une formule simple impliquant la fonction RAND pour générer des nombres aléatoires entre deux nombres quelconques.

= RAND ( ) * ( Y - X ) + X

En général, vous pouvez créer un nombre aléatoire entre X et Y en utilisant la formule ci-dessus.

= RAND ( ) * 9 + 1

Par exemple, pour générer des nombres entre 1 et 10, vous pouvez utiliser la formule ci-dessus.

Cette opération multiplie le nombre aléatoire généré par 9, puis lui ajoute 1. Cela produira des nombres décimaux compris entre 1 et 10.

Générer des nombres entiers aléatoires entre deux nombres quelconques

Un autre besoin que vous pouvez rencontrer est de générer des nombres entiers aléatoires entre deux nombres donnés. Cette opération peut également être réalisée à l’aide d’une formule simple.

= ROUND ( RAND ( ) * ( Y - X ) + X, 0 )

En général, vous pouvez utiliser la formule ci-dessus pour générer des nombres entiers aléatoires entre deux valeurs X et Y.

= ROUND ( RAND ( ) * 9 + 1, 0 )

Par exemple, la formule ci-dessus permet de créer des nombres entiers aléatoires compris entre 1 et 10.

Il s’agit de la même formule que précédemment, mais en utilisant la fonction ROUND pour arrondir à zéro décimale.

Vous pouvez copier cette formule vers le bas de la colonne sur la feuille de calcul, et si vous continuez à appuyer sur F9 pour recalculer, vous verrez différentes combinaisons de chiffres de 1 à 10.

Comme l’ensemble des nombres possibles est discret, les nombres aléatoires générés peuvent très bien être dupliqués dans la liste, en fonction du minimum et du maximum de l’intervalle.

= ROUND ( RAND ( ) * ( 4 - -3 ) + -3, 0 )

Cette formule fonctionne également pour produire des nombres négatifs. Supposons que vous ayez besoin de générer des nombres entiers aléatoires compris entre -3 et 4, alors la formule ci-dessus répondra à vos besoins.

En multipliant la fonction RAND par 7, on obtient des nombres aléatoires compris entre 0 et 7. Ajoutez -3 au résultat et arrondissez à zéro décimale, et vous obtiendrez une gamme de nombres aléatoires comprise entre -3 et 4.

Générer des nombres aléatoires à l’aide de la fonction RANDBETWEEN

Excel dispose d’une fonction utile pour générer des nombres aléatoires dans une plage de nombres supérieurs et inférieurs.

Cette fonction est plus facile à utiliser que la fonction RAND, car elle comprend des opérateurs supplémentaires pour obtenir votre plage spécifique.

Syntaxe de la fonction RANDBETWEEN

= RANDBETWEEN ( bottom, top )
  • Le bas est la fourchette inférieure des valeurs à retourner.
  • top est la fourchette supérieure des valeurs à retourner.

Ces deux arguments sont nécessaires.

Cette fonction produira des nombres entiers aléatoires entre les valeurs inférieure et supérieure. Cette fonction renverra également les limites supérieure et inférieure comme valeurs possibles, car elle n’est pas strictement intermédiaire.

Exemple avec la fonction RANDBETWEEN

= RANDBETWEEN ( -3, 4 )

Par exemple, si vous voulez des nombres aléatoires entre -3 et 4, comme dans l’exemple précédent, vous pouvez utiliser la formule ci-dessus.

Générer des nombres aléatoires avec la fonction RANDARRAY

En général, vous ne souhaitez pas une seule valeur aléatoire, mais un ensemble complet de valeurs aléatoires.

La fonction RANDARRAY est la solution parfaite pour cela.

Il remplit une série de cellules avec un tableau de nombres aléatoires, ce qui peut être très puissant.

Cette fonction est uniquement disponible sur la version Microsoft 365 d’Excel.

Syntaxe de la fonction RANDARRAY

= RANDARRAY ( [rows], [columns], [min], [max], [whole_number] )
  • Rows est le nombre de lignes à retourner.
  • Columns est le nombre de colonnes à retourner.
  • Min est la valeur minimale des nombres aléatoires.
  • Max est la valeur maximale des nombres aléatoires.
  • Whole_Number est TRUE pour renvoyer des nombres entiers, et FALSE pour renvoyer des nombres décimaux.

Tous les arguments sont facultatifs pour cette fonction.

Si aucun paramètre n’est inclus, vous obtiendrez un nombre aléatoire unique avec des décimales, de la même manière que la fonction RAND.

Exemple avec la fonction RANDARRAY

= RANDARRAY ( 4, 3, 6, 14, TRUE )

Pour générer un tableau de 4 lignes et 3 colonnes de nombres aléatoires entiers compris entre 6 et 14, vous pouvez utiliser la formule ci-dessus.

Cela produira un tableau de valeurs. Vous remarquez la bordure bleue autour des chiffres ? Ils sont tous produits à partir d’une seule formule !

Si vous ne mettez pas de valeur minimale ou maximale, la valeur par défaut de 0 à 1 sera utilisée.

La valeur minimale doit être inférieure à la valeur maximale, sinon il y aura une erreur #VALUE !

Le tableau est automatiquement redimensionné si vous modifiez les paramètres des lignes ou des colonnes dans la formule RANDARRAY. C’est pourquoi on les appelle des tableaux dynamiques.

Générer des nombres aléatoires avec le complément Analysis Tools

Il existe une autre méthode qui peut être utilisée pour insérer des nombres aléatoires sans utiliser de formule.

Vous pouvez utiliser un module complémentaire pour créer des nombres aléatoires. Excel est livré avec un module complémentaire Analysis Tool Pak, mais vous devez l’installer avant de pouvoir l’utiliser.

Installer l’Analysis Toolpak

Voici les étapes à suivre pour installer le module complémentaire Analysis Tool Pak.

  1. Cliquez sur l’onglet Fichier du ruban.
  1. Dans le volet inférieur gauche de la fenêtre, faites défiler la liste et cliquez sur Options. Vous pouvez également utiliser le raccourci clavier Alt, F, T depuis la fenêtre du tableur pour ouvrir la fenêtre Options.
  1. Dans le volet gauche de la fenêtre pop-up, cliquez sur Add-Ins.
  2. Au bas de la fenêtre principale affichée, sélectionnez Excel Add-ins dans la liste déroulante et cliquez sur le bouton Go.
  1. Une fenêtre contextuelle contenant tous les modules complémentaires disponibles pour Excel s’affiche. Cochez la case pour Analysis ToolPak, puis cliquez sur OK.
  1. Sur le ruban Excel, dans l’onglet Données, il y a maintenant un groupe supplémentaire appelé Analyse avec un bouton appelé Analyse des données.

Générer des nombres aléatoires avec l’Analysis Toolpak

Cliquez sur le bouton Analyse des données dans le groupe Analyse.

Une fenêtre contextuelle s’affiche alors. Faites défiler la liste et sélectionnez l’option Génération de nombres aléatoires, puis cliquez sur OK.

Une nouvelle fenêtre pop-up apparaît dans laquelle vous pouvez entrer vos paramètres pour générer les numéros aléatoires.

Il existe plusieurs paramètres qui peuvent être personnalisés.

  • Nombre de variables Il s’agit du nombre de colonnes de nombres aléatoires que vous souhaitez voir figurer dans votre tableau de sortie. S’il est laissé vide, toutes les colonnes seront remplies dans la plage de sortie que vous spécifiez.
  • Nombre de numéros aléatoires Il s’agit du nombre de rangées de numéros aléatoires que vous souhaitez générer. S’il est laissé vide, la plage de sortie que vous spécifiez sera remplie.
  • Distribution Vous pouvez sélectionner plusieurs méthodes de distribution dans la liste déroulante, comme la distribution uniforme ou normale. Différentes options seront disponibles dans la section Paramètres en fonction de votre sélection ici.
  • Paramètres Entrez les valeurs qui caractérisent la distribution sélectionnée.
  • Random Seed (graine aléatoire) Facultatif, il s’agit du point de départ de l’algorithme pour produire les nombres aléatoires. Si vous utilisez à nouveau la même graine, vous obtiendrez les mêmes nombres aléatoires. S’il est laissé vide, il prendra la valeur de la graine à partir de l’événement de la minuterie.
  • Plage de sortie Entrez la cellule supérieure gauche de l’endroit où le tableau doit être construit dans la feuille de calcul. Si vous avez laissé le paramètre Variables vide, vous devrez spécifier une plage entière. Notez que les données existantes dans cette plage seront écrasées.
  • Nouvelle feuille de travail Cette option permet d’insérer une nouvelle feuille de travail dans le classeur et de coller les résultats dans la cellule A1. Saisissez un nom de feuille dans la case adjacente, sinon, un nom par défaut sera utilisé.
  • Nouveau classeur Cette option crée un nouveau classeur et colle les résultats dans la cellule A1 de la première feuille.

Appuyez sur le bouton OK et Excel insérera le numéro aléatoire en fonction des options sélectionnées.

Notez que contrairement aux méthodes de formule présentées précédemment, ces chiffres sont codés en dur et ne changeront pas lorsque vous actualiserez les calculs dans le classeur.

Générer des nombres aléatoires avec VBA

VBA (Visual Basic for Applications) est le langage de programmation qui se trouve derrière l’interface d’Excel, et il peut également être utilisé pour générer des nombres aléatoires.

Cependant, il est plus compliqué que de simplement saisir une formule dans une cellule d’Excel, et vous devez avoir quelques connaissances en programmation pour l’utiliser.

Pour ouvrir l’éditeur VBA, utilisez le raccourci clavier Alt + F11.

Dans le volet gauche de la fenêtre (Explorateur de projet), vous verrez les classeurs ouverts (y compris les compléments) et les feuilles disponibles.

Dans le menu situé en haut de la fenêtre, cliquez sur Insertion, puis sur Module. Cela ajoutera une fenêtre de module à la feuille de calcul actuelle. Collez ou ajoutez le code suivant au module.

Sub RandomNumber()
    MsgBox Rnd()
End Sub

Appuyez sur F5 pour l’exécuter, et un message pop-up apparaîtra dans Excel avec un numéro aléatoire affiché. Appuyez sur OK et vous retournerez à la fenêtre de code.

Exécutez à nouveau le code et un autre nombre aléatoire s’affichera. Le nombre aléatoire sera compris entre 0 et 1, mais ne comprendra pas les valeurs 0 ou 1.

Vous pouvez également donner à la fonction Rnd un paramètre, qui est une graine pour le point de départ de l’algorithme pour produire les nombres aléatoires.

Si la valeur d’amorçage est définie sur un nombre négatif ou sur zéro, le même numéro aléatoire sera affiché à chaque fois.

En utilisant les fonctions VBA, vous pouvez émuler toutes les fonctionnalités des méthodes frontales qui ont été abordées dans cet article.

Sub RandomNumberV2()

    MsgBox Round((Rnd() * 7) + 3)
End Sub

Par exemple, si vous souhaitez générer des nombres aléatoires entiers compris entre 3 et 10, vous devez utiliser le code suivant.

Ce code multiplie le nombre aléatoire par 7, puis lui ajoute 3, avant d’arrondir à zéro décimale.

Supposons que vous souhaitiez ensuite afficher vos nombres aléatoires dans la grille. Vous pouvez le faire avec le code suivant.

Sub RandomNumberSheet()
Dim M As Integer
For M = 1 To 5
    ActiveSheet.Cells(M, 1) = Round((Rnd(10) * 7) + 3, 0)
Next M
End Sub

Ce code utilise une boucle For Next pour itérer 5 fois dans le calcul du nombre aléatoire et entrer les résultats dans une colonne de cellules en commençant par la cellule A1.

N’oubliez pas que toutes les données déjà présentes seront écrasées et qu’il n’y a pas d’avertissement ni de fonction d’annulation. Sauvegardez tout travail antérieur au préalable !

Sub RandomNumberV2()
    Randomize (10)
    MsgBox Round((Rnd() * 7) + 3)
End Sub

Il existe également une fonction VBA appelée Randomize. Vous pouvez l’utiliser avant la fonction Rnd pour réinitialiser la valeur de la graine à l’événement de la minuterie, ou à tout paramètre donné.

Générer des nombres aléatoires sans doublons ni répétitions

Il se peut que vous souhaitiez générer une série de nombres aléatoires, mais que vous ne souhaitiez pas voir apparaître de valeurs en double.

Vous pouvez sélectionner 3 nombres aléatoires entre les nombres de 1 à 10, mais où chacun des 3 nombres sélectionnés est unique.

Vous pouvez générer des nombres aléatoires à l’aide de la fonction RANDBETWEEN, puis utiliser la fonction Excel Supprimer les doublons du ruban, mais cela ne vous donnera peut-être pas tous les nombres requis.

Il existe plusieurs solutions possibles.

Solution avec les fonctions RANK.EQ et COUNTIF

Si vous n’avez pas accès à la fonction RANDARRAY dans Excel, vous pouvez utiliser une combinaison de RANK.EQ et COUNTIF pour obtenir des nombres aléatoires uniques.

Vous pouvez créer vos nombres aléatoires à l’aide de RANDBETWEEN , puis utiliser une formule dans la colonne suivante pour les classer, ce qui vous donne une séquence triée aléatoirement de 1 à 10.

= RANDBETWEEN ( 1, 10 )

Dans la cellule B2, entrez la formule ci-dessus. Copiez cette formule vers le bas de sorte qu’il y ait 10 rangées de nombres aléatoires jusqu’à la cellule B11.

Vous remarquerez que certains numéros peuvent être dupliqués et que d’autres n’apparaissent pas du tout.

Vous pouvez ensuite utiliser la fonction RANK.EQ pour les classer de manière à créer une séquence de 1 à 10 mais qui est triée de manière aléatoire.

= RANK.EQ ( B2, $B$2:$B$11 ) + COUNTIF ( $B$2:B2, B2 ) - 1

Dans la cellule C2, entrez la formule ci-dessus.

Notez que des références absolues sont utilisées (les signes $ ) afin que les références de la formule restent fixes lorsque vous copiez la formule vers le bas.

Copiez cette formule dans la cellule C11, et vous obtiendrez tous les chiffres compris entre 1 et 10, mais dans un ordre aléatoire.

Pour expliquer cette formule plus en profondeur, elle utilise deux fonctions RANK.EQ et COUNTIF.

= RANK.EQ ( number, ref, [order] )
  • Number est le numéro dont on veut trouver le rang dans le tableau.
  • Ref est le tableau dans lequel nous voulons chercher le numéro.
  • Order est facultatif et vous permet de trouver le rang dans l’ordre croissant ou décroissant. S’il est omis, l’ordre ascendant est utilisé.

La fonction RANK.EQ renvoie le rang d’un nombre dans un tableau de nombres.

= COUNTIF ( range, criteria )
  • L’intervalle est l’intervalle dans lequel sont recherchées les instances des critères.
  • Le critère est la valeur à faire correspondre dans la plage.

La fonction COUNTIF compte le nombre de cellules en fonction d’un critère donné. Dans ce cas, il s’agit de compter combien de fois un nombre aléatoire donné est apparu dans la liste.

Pour chaque numéro aléatoire, la fonction RANK.EQ déterminera sa position dans le classement par rapport aux autres numéros aléatoires. Mais si les nombres aléatoires contiennent des doublons, ils créeront un classement ex aequo.

La fonction COUNTIF compensera les éventuelles égalités dans le classement et ajoutera une unité au classement pour chaque fois que le numéro aléatoire est apparu précédemment.

Cela crée un classement unique où les ex-aequo n’obtiennent pas le même rang.

Comme ce classement est basé sur un ensemble de nombres aléatoires, le résultat est le même que celui d’une liste aléatoire de nombres de 1 à 10.

Maintenant, si vous ne voulez que 5 nombres non répétitifs, il vous suffit de prendre les 5 premiers du classement.

Solution avec VBA

Vous pouvez également utiliser VBA pour générer une chaîne de chiffres aléatoires de 1 à 10 sans doublons.

Sub RandomNumberNoDuplicates()
Dim M As Integer, Temp As String, RandN As Integer
For M = 1 To 5
Repeat:
    RandN = Round((Rnd(10) * 9) + 1, 0)
    If InStr(Temp, RandN) Then GoTo Repeat
    ActiveSheet.Cells(M, 1) = RandN
    Temp = Temp & RandN & "|"
Next M
End Sub

Ce code itère à travers les valeurs de 1 à 5, en générant à chaque fois un nombre aléatoire entre 1 et 10.

Il teste le nombre aléatoire pour vérifier s’il a déjà été généré. Pour ce faire, il concatène les nombres réussis dans une chaîne, puis recherche cette chaîne pour voir si le nombre a déjà été utilisé.

S’il a été trouvé, il utilise l’étiquette Repeat pour revenir en arrière et générer un nouveau numéro. On vérifie à nouveau qu’il n’a pas déjà été utilisé. S’il s’agit d’un nouveau numéro, il est ajouté à la feuille.

Solution avec les tableaux dynamiques

Si vous avez des tableaux dynamiques dans Excel, il existe une méthode de formule unique pour éviter la répétition des valeurs.

Supposons que vous vouliez renvoyer 5 numéros de la séquence 1 à 10. Vous voulez que chaque numéro sélectionné soit unique.

Pour ce faire, vous pouvez utiliser une combinaison des fonctions SEQUENCE, SORTBY, RANDARRAY et INDEX.

=INDEX(
    SORTBY(
        SEQUENCE(10),
        RANDARRAY(10)
    ),
    SEQUENCE(5)
)

La formule ci-dessus crée une séquence de chiffres de 1 à 10.

Il les trie ensuite dans un ordre aléatoire à l’aide de la fonction SORTBY et du tri sur une colonne de nombres aléatoires générés par la fonction RANDARRAY. L’effet est de trier la séquence dans un ordre aléatoire.

Maintenant, si vous voulez obtenir 5 numéros aléatoires et uniques, il vous suffit de prendre les 5 premiers numéros de la séquence triée au hasard.

C’est exactement ce que fait la fonction INDEX! Cette partie de la formule renvoie les 5 premiers chiffres de la séquence triée au hasard.

Conclusion

Il existe plusieurs façons de générer des nombres aléatoires dans Excel.

Que vous ayez besoin de nombres entiers, de décimales ou d’une plage de nombres aléatoires avec une limite supérieure et inférieure, la possibilité existe. Excel est extrêmement polyvalent à ce sujet.

Toutefois, n’oubliez pas que ces nombres sont des nombres pseudo-aléatoires générés par un algorithme.

Bien que le générateur de nombres aléatoires passe tous les tests d’aléa, il ne s’agit pas de véritables nombres aléatoires.

Pour être un véritable nombre aléatoire, il faudrait qu’il soit déterminé par un événement aléatoire se produisant en dehors de l’environnement informatique.

Pour la plupart des simulations générales et des analyses statistiques, le générateur de nombres aléatoires Excel est considéré comme adapté.