Excel et VBA comme coach sportif

Excel et VBA comme coach sportif
Dernière mise à jour le 22/05/2024
Temps de lecture : 4 minutes

Excel peut être votre nouveau coach sportif en utilisant une fonctionnalité bien précise du VBA.

Vidéo de présentation de l'exercice

Nous allons recréer un exercice très courant au tennis ou au ping-pong ; aller toucher des verres disposés en carré

Comment transformer Excel en coach avec du VBA ?

C'est Excel qui va nous annoncer le numéro du verre à toucher 😉

Nous allons créer un programme VBA qui va énoncer de façon aléatoire un numéro de 1 à 4 avec une seconde de délai entre chaque numéro.

Conception du programme

Le programme repose sur seulement 4 aspects

  • Créer un nombre aléatoire entre 1 et 4
  • Convertir ce nombre en chaîne de caractères
  • Demander à Excel de prononcer ce mot
  • Recommencer la séquence un nombre de fois défini

Gérer un nombre aléatoire

Créer un nombre aléatoire est assez simple a réaliser.

  • L'instruction Rnd (pour random en anglais) va créer un nombre aléatoire entre 0 et 1 (1 exclu).
  • Maintenant, en multipliant cette fonction Rnd par 4, nous allons avoir un nombre en 0 et 3,99999.
  • Puis, grâce à la fonction Int (Integer ou Entier), nous n'allons conserver que la partie entière du nombre aléatoire soit 0, 1, 2 ou 3.
  • Il ne reste plus qu'à rajouter la valeur 1 au résultat obtenu pour avoir un nombre aléatoire entre 1 et 4.

NbreAlea = Int(Rnd() * 4) + 1

Spécificité du VBA pour les nombres aléatoires

Seulement, cette instruction n'est pas suffisante. En effet, en VBA, il faut "forcer" le recalcul aléatoire avec l'instruction Randomize.

Sans cette instruction, il y a un risque que la séquence aléatoire se répète.

Convertir les chiffres en chaînes de caractères

Maintenant, il est important de convertir le chiffre trouver en chaîne de caractères. En effet, la commande qui permet de faire parler Excel doit avoir comme paramètre une chaîne de caractères (String en anglais) et pas un chiffre.

Pour cela, nous allons faire appel à la fonction CHOISIR d'Excel mais depuis le VBA. Pour cela, il faut utiliser l'instruction Application.WorksheetFunction.Choose

Ensuite, il faut écrire les paramètres exactement de la même façon qu'avec la fonction CHOISIR. Soit

Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")

Faire parler Excel

Pour demander à Excel de prononcer une phrase, il suffit de passer la phrase en paramètre de la méthode Application.Speech.Speak

Application.Speech.Speak TextNumber

Intégrer une temporisation

Tout est presque parfait. Il faut juste intégrer une temporisation d'une seconde pour nous laisser le temps d'atteindre le verre 😉 Ici, nous allons intégrer une pause d'une seconde après chaque mot prononcé avec l'instruction

Application.Wait (Now + TimeValue("00:00:01"))

Répéter la séquence plusieurs fois

Une fois que cette séquence est construite, il suffit d'insérer ces instructions dans une boucle For ... Next pour répéter ces instructions autant de fois que vous le souhaitez

Le programme complet

Comment intégrer le code ?

Pour faire fonctionner ce code, il faut le copier dans le visual basic editor

  1. Ouvrez un nouveau classeur Excel
  2. Ouvrez le visual basic editor avec le raccourci-clavier Alt + F11
  3. Ajouter un nouveau module
Insérer un module VBA
  1. Coller le code dans le module
Copier le code dans un module
  1. Fermer le VBA

Lancer la macro

  1. Depuis Excel, appuyer sur les touches Alt + F8
  2. Appuyer sur le bouton Exécuter
Lance le programme du coach sportif

Comment débugger un programme VBA

Si vous avez des difficultés à trouver l'origine de vos erreurs en VBA, ce guide va vous expliquer comment utiliser le débuger.

Jamais 2 fois le même nombre

Une variante intéressante du code c'est de ne jamais répéter 2 fois le même nombre à la suite. Pour cela, il faut rajouter un simple test lors de la génération du nombre aléatoire pour vérifier que le précédent nombre n'est pas égal au nouveau.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

MVP_logo_2017

Excel et VBA comme coach sportif

Reading time: 4 minutes
Dernière mise à jour le 22/05/2024

Excel peut être votre nouveau coach sportif en utilisant une fonctionnalité bien précise du VBA.

Vidéo de présentation de l'exercice

Nous allons recréer un exercice très courant au tennis ou au ping-pong ; aller toucher des verres disposés en carré

Comment transformer Excel en coach avec du VBA ?

C'est Excel qui va nous annoncer le numéro du verre à toucher 😉

Nous allons créer un programme VBA qui va énoncer de façon aléatoire un numéro de 1 à 4 avec une seconde de délai entre chaque numéro.

Conception du programme

Le programme repose sur seulement 4 aspects

  • Créer un nombre aléatoire entre 1 et 4
  • Convertir ce nombre en chaîne de caractères
  • Demander à Excel de prononcer ce mot
  • Recommencer la séquence un nombre de fois défini

Gérer un nombre aléatoire

Créer un nombre aléatoire est assez simple a réaliser.

  • L'instruction Rnd (pour random en anglais) va créer un nombre aléatoire entre 0 et 1 (1 exclu).
  • Maintenant, en multipliant cette fonction Rnd par 4, nous allons avoir un nombre en 0 et 3,99999.
  • Puis, grâce à la fonction Int (Integer ou Entier), nous n'allons conserver que la partie entière du nombre aléatoire soit 0, 1, 2 ou 3.
  • Il ne reste plus qu'à rajouter la valeur 1 au résultat obtenu pour avoir un nombre aléatoire entre 1 et 4.

NbreAlea = Int(Rnd() * 4) + 1

Spécificité du VBA pour les nombres aléatoires

Seulement, cette instruction n'est pas suffisante. En effet, en VBA, il faut "forcer" le recalcul aléatoire avec l'instruction Randomize.

Sans cette instruction, il y a un risque que la séquence aléatoire se répète.

Convertir les chiffres en chaînes de caractères

Maintenant, il est important de convertir le chiffre trouver en chaîne de caractères. En effet, la commande qui permet de faire parler Excel doit avoir comme paramètre une chaîne de caractères (String en anglais) et pas un chiffre.

Pour cela, nous allons faire appel à la fonction CHOISIR d'Excel mais depuis le VBA. Pour cela, il faut utiliser l'instruction Application.WorksheetFunction.Choose

Ensuite, il faut écrire les paramètres exactement de la même façon qu'avec la fonction CHOISIR. Soit

Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")

Faire parler Excel

Pour demander à Excel de prononcer une phrase, il suffit de passer la phrase en paramètre de la méthode Application.Speech.Speak

Application.Speech.Speak TextNumber

Intégrer une temporisation

Tout est presque parfait. Il faut juste intégrer une temporisation d'une seconde pour nous laisser le temps d'atteindre le verre 😉 Ici, nous allons intégrer une pause d'une seconde après chaque mot prononcé avec l'instruction

Application.Wait (Now + TimeValue("00:00:01"))

Répéter la séquence plusieurs fois

Une fois que cette séquence est construite, il suffit d'insérer ces instructions dans une boucle For ... Next pour répéter ces instructions autant de fois que vous le souhaitez

Le programme complet

Comment intégrer le code ?

Pour faire fonctionner ce code, il faut le copier dans le visual basic editor

  1. Ouvrez un nouveau classeur Excel
  2. Ouvrez le visual basic editor avec le raccourci-clavier Alt + F11
  3. Ajouter un nouveau module
Insérer un module VBA
  1. Coller le code dans le module
Copier le code dans un module
  1. Fermer le VBA

Lancer la macro

  1. Depuis Excel, appuyer sur les touches Alt + F8
  2. Appuyer sur le bouton Exécuter
Lance le programme du coach sportif

Comment débugger un programme VBA

Si vous avez des difficultés à trouver l'origine de vos erreurs en VBA, ce guide va vous expliquer comment utiliser le débuger.

Jamais 2 fois le même nombre

Une variante intéressante du code c'est de ne jamais répéter 2 fois le même nombre à la suite. Pour cela, il faut rajouter un simple test lors de la génération du nombre aléatoire pour vérifier que le précédent nombre n'est pas égal au nouveau.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.