Excel comme coach sportif

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

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

Cover Excel Coach Sportif

S'occuper pendant le confinement

Comme chacun d'entre nous, le temps est bien long et après avoir nettoyé ma salle de bains pour la 5e fois, je ne ne savais plus comment m'occuper. Et puis, je me suis rappeler d'une fonctionnalité très peu utilisée d'Excel ; faire parler Excel (si si, c'est possible)

Il est vrai que faire parler Excel dans un bureau, c'est peut-être amusant une ou deux fois mais très vite cela va agacer vos collègues 😤😡

Mais depuis chez vous, cette fonctionnalité peut être très utile pour faire des exercices physiques ou des jeux avec vos enfants 💪👍 Je vous montre tout cela dans cet article.

Vidéo de présentation de l'exercice

Ce que nous allons faire un exercice très courant au tennis ou au ping-pong c'est de venir toucher des verres qui représente un carré.

Et Excel dans tout ça ?

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

Nous allons créer un programme (une macro) 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

Pour apprendre à programmer en VBA, je vous recommande cet ouvrage.

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

Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim QteNombrePrononce As Long
    QteNombrePrononce = 10  'Changer cette valeur pour jouer plus longtemps
    Application.Speech.Speak "Prêt ?"
    Application.Wait (Now + TimeValue("00:00:02"))
    Application.Speech.Speak "Go"
    For i = 1 To QteNombrePrononce 
        Randomize
        If i = QteNombrePrononce Then
            Application.Speech.Speak "Last One"
        End If
        NbreAlea = Int(Rnd() * 4) + 1
        TextNumber = Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")
        Application.Speech.Speak TextNumber
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
End Sub

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

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.

Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim QteNombrePrononce As Long
Dim NombrePrecedent as Long
    QteNombrePrononce = 10  'Changer cette valeur pour jouer plus longtemps
    Application.Speech.Speak "Prêt ?"
    Application.Wait (Now + TimeValue("00:00:02"))
    Application.Speech.Speak "Go"
    For i = 1 To QteNombrePrononce 
        Randomize
        Do
            NbreAlea = Int(Rnd() * 4) + 1
        Loop While NbreAlea = NombrePrecedent 
        NombrePrecedent = NbreAlea
        TextNumber = Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")
        Application.Speech.Speak TextNumber
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
End Sub

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.

Excel comme coach sportif

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

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

Cover Excel Coach Sportif

S'occuper pendant le confinement

Comme chacun d'entre nous, le temps est bien long et après avoir nettoyé ma salle de bains pour la 5e fois, je ne ne savais plus comment m'occuper. Et puis, je me suis rappeler d'une fonctionnalité très peu utilisée d'Excel ; faire parler Excel (si si, c'est possible)

Il est vrai que faire parler Excel dans un bureau, c'est peut-être amusant une ou deux fois mais très vite cela va agacer vos collègues 😤😡

Mais depuis chez vous, cette fonctionnalité peut être très utile pour faire des exercices physiques ou des jeux avec vos enfants 💪👍 Je vous montre tout cela dans cet article.

Vidéo de présentation de l'exercice

Ce que nous allons faire un exercice très courant au tennis ou au ping-pong c'est de venir toucher des verres qui représente un carré.

Et Excel dans tout ça ?

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

Nous allons créer un programme (une macro) 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

Pour apprendre à programmer en VBA, je vous recommande cet ouvrage.

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

Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim QteNombrePrononce As Long
    QteNombrePrononce = 10  'Changer cette valeur pour jouer plus longtemps
    Application.Speech.Speak "Prêt ?"
    Application.Wait (Now + TimeValue("00:00:02"))
    Application.Speech.Speak "Go"
    For i = 1 To QteNombrePrononce 
        Randomize
        If i = QteNombrePrononce Then
            Application.Speech.Speak "Last One"
        End If
        NbreAlea = Int(Rnd() * 4) + 1
        TextNumber = Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")
        Application.Speech.Speak TextNumber
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
End Sub

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

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.

Sub Sport()
Dim i As Long
Dim RndNumber As Long
Dim TextNumber As String
Dim QteNombrePrononce As Long
Dim NombrePrecedent as Long
    QteNombrePrononce = 10  'Changer cette valeur pour jouer plus longtemps
    Application.Speech.Speak "Prêt ?"
    Application.Wait (Now + TimeValue("00:00:02"))
    Application.Speech.Speak "Go"
    For i = 1 To QteNombrePrononce 
        Randomize
        Do
            NbreAlea = Int(Rnd() * 4) + 1
        Loop While NbreAlea = NombrePrecedent 
        NombrePrecedent = NbreAlea
        TextNumber = Application.WorksheetFunction.Choose(NbreAlea, "un", "deux", "trois", "quatre")
        Application.Speech.Speak TextNumber
        Application.Wait (Now + TimeValue("00:00:01"))
    Next
End Sub

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.