dans ton cas, tu n'auras pas de problème, il suffit de prendre cette partie de ton code:
1 2
| AnsList = Qs(X) & vbCrLf & vbCrLf & "Votre réponse :" & choices(X, UserAns(X)) & vbCrLf & vbCrLf & "La réponse correcte :" & choices(X, Ans(X)) & vbCrLf
AnsList = AnsList + Qs(X) & vbCrLf & vbCrLf & "Votre réponse :" & choices(X, UserAns(X)) & vbCrLf & vbCrLf & "La réponse correcte :" & choices(X, Ans(X)) & vbCrLf |
et de supprimer la première ligne.
Pourquoi? La variable que tu utilise pour stocker le texte est une variable string: Anslist (définie l.9 de ton code). Une variable string, c'est comme une phrase: c'est une variable texte. Tout ce que tu vas mettre est du texte, un seul et long texte (du moins, pour ton code, je te conseille d'aller chercher des infos sur comment utiliser les arrays, les collections et les dictionnaires, il y a énormément de tutos écrits sur developpez.net, tout comme partout ailleurs sur internet, et il y a même de très bons tutos vidéos sur youtube (si tu parle anglais, mais c'est pas si compliqué avec les sous-titres) - je te conseille notamment WiseOwl, qui fait des tutos introductifs pas-à-pas très biens faits.)
Pour en revenir à ton code, on a donc ta variable string définit en ligne 9. On n'y touche pas avant la ligne 18, c'est à dire jusqu'à la boucle, qui la remplit.
Dans cette boucle, à chaque fois que la paire question+réponse donnée par l'utilisateur, ne correspond par à la paire question+réponse attendue, tu fais deux choses à Anslist:
En premier
AnsList = Qs(X) & vbCrLf & vbCrLf & "Votre réponse :" & choices(X, UserAns(X)) & vbCrLf & vbCrLf & "La réponse correcte :" & choices(X, Ans(X)) & vbCrLf
Du coup, on peut représenter ta variable comme ceci:
"Question 1
Votre Réponse : choix B
La réponse correcte : choix D"
Dans seconde opération:
AnsList = AnsList + Qs(X) & vbCrLf & vbCrLf & "Votre réponse :" & choices(X, UserAns(X)) & vbCrLf & vbCrLf & "La réponse correcte :" & choices(X, Ans(X)) & vbCrLf
Anslist est égale à la valeur d'éjà rentrée dans Anslist, + une nouvelle fois tout le texte.
Tu vois l'erreur? A chaque tour dans la loop, tu écrase les données de ta question précédente pour tout réécrire. Alors que si tu gardes seulement
AnsList = AnsList + Qs(X) & vbCrLf & vbCrLf & "Votre réponse :" & choices(X, UserAns(X)) & vbCrLf & vbCrLf & "La réponse correcte :" & choices(X, Ans(X)) & vbCrLf
A chaque tour dans la loop, tu ajoute dans Anslist les informations liées aux questions.
J'espère avoir pu être clair
Partager