Bonjour, salut LouReeD,
Je n'ai fait que survoler vos fichiers, pardon d'avance si ma réponse n'est pas adaptée !
Il est possible d'avoir une écriture très "light" en utilisant une boucle et des variables tableau. Voilà ma proposition (à compléter avec les vraies questions) :
Option Base 1
Sub Questionnaire()
Dim i As Integer, Questions(), Réponses(), Bon As Boolean
Questions = Array("Question 1 : Tatatata ?" & Chr(10) & "A : rép. A", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9", "Q10") 'Liste des questions, comprenant les propositions de réponse
Réponses = Array("A", "B", "C", "D", "D", "C", "B", "A", "C", "B") 'Liste des réponses
Do
Bon = (UCase(InputBox(Questions(i + 1))) = Réponses(i + 1)) 'Si valeur saisie = réponse à la question, alors BON = VRAI
i = i + Abs(Bon) 'Ajoute 1 au compteur si BON
Loop While Bon And i < 10 'Continue tant que c'est bon (et qu'on est pas à la fin)
If i = 10 Then MsgBox ("Félicitations, c'est un sans faute !") Else MsgBox ("Perdu ! Votre score est de : " & i & " points.")
End Sub
PS :
- Cette version allégée ne dispose pas de l'inscription du score en face d'un nom sur la feuille, mais c'est très simple à rajouter si besoin...
- Cet exemple ne gère que des choix de réponse unique, mais il est possible d'intégrer des réponses multiples avec une seconde boucle et une fonction SPLIT
- J'ai utilisé une boucle DO... LOOP WHILE, mais on peut très bien faire une boucle FOR... NEXT avec la variable i (i = 1 To 10) et placer un EXIT FOR si BON = FAUX