Comment lancer les dés sur Excel ?
Dans ce tutoriel, je vais vous montrer comment lancer des dés sur Excel. Pour cela nous allons développer une petite macro-commande en VBA, que nous viendrons détailler pour que celle-ci soit accessible pour tous. Consultez bien ce tutoriel jusqu’au bout, car nous y verrons comment personnaliser facilement les tirages (nombre de dés et valeur maximale de chaque dés).
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Afficher les dés
Pour afficher les dés, nous n’allons pas avoir besoin d’insérer des images, nous allons tout simplement pouvoir utiliser les emojis de dés correspondants.
Pour insérer un émoji dans une cellule Excel, nous pouvons utiliser la fonction UNICAR(), que nous avions déjà découverte dans un tutoriel précédent que vous pouvez consulter en cliquant ici.
Cette fonction permet de retourner un caractère spécial à partir du numéro qui lui correspond.
Le numéro du dés à un point est le 9856.
Les autres numéros sont logiquement les suivants, jusqu’à 9861 pour le dés à six points.
En revanche, nous n’allons pas utiliser la fonction UNICAR() qui est une fonction Excel, mais son équivalent en VBA, la fonction ChrW(), en sachant que les numéros de série à utiliser sont les mêmes.
2. Lancement d’un dés
Pour commencer, nous allons voir comment lancer un seul dés.
Pour cela, nous allons bien entendu devoir passer par le développement d’une petite macro-commande en VBA.
Pour que ce tutoriel soit accessible à tout le monde, nous allons revenir dans le détail sur aspect de cette dernière.
Si vous souhaitez aller plus loin dans la découverte du langage VBA, vous pouvez évidemment consulter la formation disponible sur le blog en cliquant ici.
Pour commencer, nous allons lancer l’éditeur de code VBE (pour Visual Basic Editor), qui est l’éditeur de code intégré dans les différentes applications de la suite Office et qui permet de développer des macro-commandes en VBA.
Pour cela, nous appuyons simplement sur les touches [Alt]+[F11] :
VBE s’ouvre alors et nous allons commencer par créer un nouveau module.
Un module est une feuille de saisie de code dans laquelle nous allons pouvoir saisir nos macros et fonctions.
Pour insérer un nouveau module, nous nous rendons dans le menu Insertion > Module :
Une fois le module inséré, nous allons créer une nouvelle macro en utilisant le mot-clé Sub, suivi du nom de la macro :
Sub lancementDes()
Lorsque nous appuyons sur la touche [Entrée], Excel insère automatiquement la fin de la macro avec la ligne « End Sub », ce qui signifie que tout ce que nous allons taper entre ces lignes sera exécuté automatiquement à chaque lancement de la macro.
Pour commencer, nous allons afficher le dés à un point dans la cellule [A10] de la feuille de calcul :
[A10] = Chr(9856)
Nous pouvons exécuter la macro en appuyant sur la touche [F5] et aller visionner le résultat dans la feuille de calcul :
Il ne reste alors plus qu’à augmenter la taille de caractère :
Ensuite, pour mettre en place un lancement aléatoire, nous allons pouvoir utiliser la fonction Rnd que nous avons également découverte dans un tutoriel précédent.
Randomize
[A10] = ChrW(9856 + Int(Rnd * 6))
Nous commençons par appeler la fonction Randomize qui permet de rendre le lancement totalement aléatoire.
Ensuite, à l’intérieur de la fonction ChrW nous ajoutons au numéro de série du dés à un point le résultat retourné par la fonction Rnd que nous multiplions par 6.
Pour rappel, la fonction Rnd retourne une valeur comprise en 0 et 1.
Nous multiplions ce résultat par 6, en nous n’en prenons que la valeur entière, c’est-à-dire un nombre entier compris entre 0 et 5.
Maintenant, à chaque fois que nous lançons la macro, la valeur du dés sera modifiée.
Pour animer légèrement le résultat, nous allons faire défiler des résultats provisoires en encapsulant cette ligne dans une boucle For :
Dim i As Integer
Randomize
For i = 1 To 100
[A10] = ChrW(9856 + Int(Rnd * 6))
Next
Nous commençons par déclarer une nouvelle variable que nous appelons i et que nous typons en tant que nombre entier, donc Interger.
Avec cette variable nous pouvons mettre en place une boucle For qui va permettre d’afficher 100 résultats successifs.
3. Lancer plusieurs dés
Maintenant que nous savons comment lancer un seul dés, nous allons pouvoir répéter la même opération pour plusieurs dés.
Pour cela, il suffira de récupérer la valeur de la cellule dans laquelle l’utilisateur est invité à saisir le nombre de dés (dans notre, exemple la cellule B7).
Nous allons tout simplement mettre en place une seconde boucle en utilisant une variable que nous appelons j et qui pourra avoir pour valeur maximale le résultat de cette cellule :
Dim i As Integer, j As Integer
Randomize
For j = 1 To [b7]
For i = 1 To 100
[a10].Offset(0, j - 1) = ChrW(9856 + Int(Rnd * 6))
Next
Next
Comme vous pouvez le constater, le dés en cours sera affiché dans la cellule retournée par la fonction Offset.
Cette fonction permet d’effectuer un décalage de cellule, en partant d’une cellule donnée, et en se décalant d’un nombre de cellule donné en argument. Ce décalage correspond à la valeur retournée par la valeur de j moins 1.
Bien entendu, nous allons devoir dupliquer la mise en forme du dés d’origine sur ces cellules.
Pour cela, nous sélectionnons la cellule B10, puis nous plaçons le curseur de la souris sur la poignée de recopie (le petit carré noir situé en bas à droite, que nous faisons simplement glisser vers la droite, de 10 cellules).
Maintenant si nous relançons un tirage, nous allons pouvoir constater que les derniers dés vont rester inchangés dés lors que leur nombre est inférieur à 10 :
Pour éviter ce problème, nous allons simplement supprimer le contenu des 10 cellules en utilisant la méthode ClearContents de cette plage :
[a10:j10].ClearContents
Cette ligne est à insérer avant le lancement de la boucle :
4. Faire varier la valeur maximale des dés
Parfois nous pouvons avoir besoin de tirer un nombre aléatoire dont la valeur maximale devrait inférieure à six.
Par exemple pour tirer un nombre compris entre 1 et 2 (tirage pile ou face).
Pour cela, nous venons saisir la valeur maximale acceptée dans la cellule B8 :
Ensuite, nous venons utiliser cette valeur dans la détermination de la valeur aléatoire à attribuer aux dés ;
[a10].Offset(0, j - 1) = ChrW(9856 + Int(Rnd * [b8]))
5. Créer un bouton pour lancer la macro
Maintenant que la macro-commande est terminée, il ne reste plus qu’à trouver un moyen simple de l’appeler directement depuis la feuille de calcul.
Pour cela, nous allons simplement insérer un bouton à l’intérieur de celle-ci que nous allons lier à la macro.
Nous nous rendons donc dans le menu Insertion > Zone de texte, puis nous insérons cette zone de texte à l’endroit souhaité :
Nous pouvons ensuite saisir le texte correspond et mettre en forme ce bouton depuis le menu Mise en forme, qui n’apparaît que lorsque le bouton est sélectionné :
Pour affecter la macro au clic sur ce bouton, nous effectuons un clic-droit > Affecter une macro :
Il suffit ensuite de sélectionner la macro et de cliquer sur le bouton [OK] :