 
Version 1: Il s'agit de choisir un nombre au hasard :
Option Explicit
  ' Affichage d'un message de bienvenue et d'un message d'au revoir
Sub CalculMentalV1()
    MsgBox "Bienvenue dans le programme de calcul mental"
    MsgBox "Merci d'avoir joué"
  End Sub
Version 2 : Il s'agit de choisir un nombre au hasard :
Sub CalculMentalV2()
    Dim Nombre1
    Randomize ' Cette instruction permet simplement d'assurer qu'à chaque 
  lancement du programme,
    ' Le nombre aléatoire sera toujours différent
    MsgBox "Bienvenue dans le programme de calcul mental"
    Nombre1 = Rnd
    MsgBox Nombre1
    MsgBox "Merci d'avoir joué"
  End Sub
En fait, il faut le transformer d'un nombre au hasard entre 0 et 1 en nombre au hasard entre 1 et 100 (100 par exemple)
Sub CalculMentalV3()
    Dim N1
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
    N1 = Rnd ' 0.9963265412 - Nombre au hasard entre 0 et 1
    N1 = N1 * 100 ' 99.63265412 - Le même nombre * 100
    N1 = N1 + 1 ' 100.63265412 - Le même nombre + 1 (sinon ce serait un nombre 
  au hasard entre 0 et 99)
    N1 = Int(Hasard) ' 100 ' On supprime toutes les décimales pour avoir 
  un nombre entier
    MsgBox N1
    MsgBox "Merci d'avoir joué"
  End Sub
Il est possible de compresser la génération du nombre aléatoire en une seule ligne de code qui est plus difficile à comprendre mais qui permet un programme plus compact
Sub CalculMentalV4()
    Dim N1
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
    N1 = Int((100 * Rnd) + 1)
    MsgBox N1
    MsgBox "Merci d'avoir joué"
  End Sub
En fait, ce n'est pas un seul nombre que nous avons besoin, mais 2
Sub CalculMentalV5()
    Dim N1, N2
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    MsgBox "N1 égale " & N1
    MsgBox "N2 égale " & N2
    MsgBox "Merci d'avoir joué"
  End Sub
Il s'agit maintenant de poser une question à l'utilisateur :
Sub CalculMentalV6()
    Dim N1, N2
    Randomize
       MsgBox "Bienvenue dans 
  le programme de calcul mental"
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    ' Utilisation astucieuse des & :
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    MsgBox "Merci d'avoir joué"
  End Sub
Et maintenant, on vérifie si l'utilisateur a entré la bonne réponse : Cette version dit que l'utilisateur a entré une fausse réponse même si elle est correcte Je pense que c'est parce que N1 et N2 n'ont pas été déclarés en INTEGER
Sub CalculMentalV7()
    Dim N1, N2
    Dim Reponse ' Stockage de la réponse de l'utilisateur
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
    MsgBox "Merci d'avoir joué"
  End Sub
Cette version fonctionne
Sub CalculMentalV8()
    ' Déclaration des variables correctement
    Dim N1 As Integer
    Dim N2 As Integer 
    Dim Reponse ' Stockage de la réponse de l'utilisateur
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
    MsgBox "Merci d'avoir joué"
  End Sub
Maintenant, ce n'est pas un calcul qu'il faut proposer à l'utilisateur, mais 4 : Si on n'utilise pas de boucle For To Next, on obtient le programme suivant qui ressemble à un mammouth : (Et encore... on n'a que 4 calculs...)
Sub CalculMentalV9()
     
    Dim N1 As Integer
    Dim N2 As Integer
     
    Dim Reponse ' Stockage de la réponse de l'utilisateur
    Randomize
    MsgBox "Bienvenue dans le programme de calcul mental"
     
    ' Premier calcul :
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
     
    ' Deuxième calcul :
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
    
    ' Troisième calcul :
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
     
    ' Quatrième et dernier calcul :
    N1 = Int((100 * Rnd) + 1)
    N2 = Int((100 * Rnd) + 1)
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
    Else
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
     
    MsgBox "Merci d'avoir joué"
  End Sub
Le programme est terminé. Mettons maintenant les commentaires correctement, et aérons le programme pour Pouvoir le relire facilement, et apporter aisément des modifications ultérieures.
Sub CalculMentalV12()
    ' *******************************
    ' * Déclaration des variables : *
    ' *******************************
    Dim N1 As Integer ' Premier des deux nombre au hasard
    Dim N2 As Integer ' Second des deux nombres au hasard
    Dim Reponse As Integer ' Réponse proposée à chaque fois par le joueur
    Dim Compteur As Integer ' Compteur de questions
    Dim Score As Integer ' Contiendra le score du joueur (nombre de réponses 
  correctes)
     
    ' ***************************
    ' *Démarrage du programme : *
    ' ***************************
    Score = 0 ' D'entrée son score est de zéro.
    Randomize ' Permet d'assurer que les nombres seront toujours différents 
  à chaque tirage au sort
    MsgBox "Bienvenue dans le programme de calcul mental"
     
    ' ***********************
    ' * Boucle principale : *
    ' ***********************
    For Compteur = 1 To 4 ' Il est facile de remplacer 4 par un autre nombre...
    N1 = Int((100 * Rnd) + 1) ' Génération d'un nombre au hasard N1
    N2 = Int((100 * Rnd) + 1) ' Génération d'un nombre au hasard N2
    Reponse = InputBox("Combien font " & N1 & " + " & N2 & 
  " ?")
    ' Si le joueur répond correctement :
    If Reponse = N1 + N2 Then
      MsgBox "Bonne réponse !"
      Score = Score + 1 ' On augmente son score s'il répond bien
    Else ' Sinon...
      ' Sinon, son score ne bouge pas...
      MsgBox "Désolé... la bonne réponse était " & N1 + N2
    End If
    Next ' Fin du For
     
    ' **********************
    ' * Fin du programme : *
    ' **********************
    MsgBox "Merci d'avoir joué. Votre score est de " & Score & " 
  sur 4."
  End Sub
Tout programme est améliorable à l'infini. Essayez donc ces quelques améliorations :
TRES FACILE
  - A la place d'addictions, faire des soustractions, ou des multiplications
FACILE
  Demander au joueur son nom, pour personnaliser le message de conclusion :
  "Roger, votre score est de 3 sur 4"
FACILE
  - Demander au joueur à la base combien d'additions il veut (3, 4, 50 ?)
FACILE
  - Demander la difficulté voulue au joueur (Des additions jusqu'à 100 comme ici, 
  ou 500, ou 10000 ?)
ASSEZ FACILE
  - Faire des commentaires suivant le score :
  "Score de 1 sur 4, Roger, vous êtes NUL !"
  Ou
  "Score de 4 sur 4, Marcel, vous êtes un génie !"
ASSEZ FACILE
  - Afficher les résultats successifs des additions dans Word avec Selection.TypeText 
  et TypeParagraph
DIFFICILE
  - Demander à l'utilisateur s'il veut faire des additions, des soustractions 
  ou des multiplications avant de commencer le jeu