Questionnaire

Bonjour à tous,

je suis un novice en codage VBA ( en codage tout court...) et j'aimerais réaliser un QCM avec la fonction inputbox et avoir à la fin un message (fonction msgbox?) donnant le pourcentage de bonne réponse. J'aimerais avoir une ébauche de code si cela est possible pour une/deux questions avec un message à la fin donnant les résultats. Peut importe les questions, juste un petit exemple s'il vous plait.

Cordialement.

Bonsoir Gon, bonsoir le forum,

Une exemple avec deux questions :

Sub Macro1()
Dim NQ As Byte 'déclare la variable NQ (Nombre de Questions)
Dim Q1 As Variant 'déclare la variable Q1 (Question 1)
Dim Q2 As Variant 'déclare la variable Q2 (Question 2)
Dim R As Byte 'déclare la variable R (Résultat)

NQ = 2 'définit le nombre de questions NQ (à adapter)

'définit la question Q1 (Type 2 correspond à du texte)
Q1 = Application.InputBox("Quelle es la couleur du cheval blanc d'Henri IV ?", "Qestion Nº 1", Type:=2)
Select Case Q1 'agit en fonction de la réponse à la question Q1
    Case UCase("BLANC") 'cas "BLANC ou blanc"
        R = 1 'définit le résultat R
    Case Else 'tous les autres cas y compris le bouton "Annuler" ou non renseignée
        R = 0 'définit le résultat R
End Select 'fin de l'action en fonction de la réponse à la question Q1

'définit la question Q2 (Type 1 correspond à un nombre)
Q2 = Application.InputBox("Combien d'oreilles avait le cheval noir de Ravaillac ?", "Question Nº 2", Type:=1)
Select Case Q2 'agit en fonction de la réponse à la question Q2
    Case 2 'cas 2
        R = R + 1 'définit le résultat R
    Case Else 'tous les autres cas y compris le bouton "Annuler" ou non renseignée
        R = R + 0 'définit le résultat R
End Select 'fin de l'action en fonction de la réponse à la question Q2

'message de fin
MsgBox R & IIf(R <= 1, " réponse bonne sur ", "réponses bonnes sur ") & NQ & "." & Chr(10) _
    & "La réponse à la question Nº 1 était : " & Chr(34) & "blanc" & Chr(34) & Chr(10) _
    & "La réponse à la question Nº 2 était : " & Chr(34) & "2" & Chr(34) & "."
End Sub

Mais si je devais faire ça pour moi, j'utiliserais plutôt une UserForm avec une TextBox par question...

Bonjour Thauthème,bonjour le forum,

Merci beaucoup, grâce à tes annotations j'ai découvert de nouvelles fonctions et leurs utilités.

Je vais ajouter d'autres questions, faire des annotations et je t’envoie ça pour me dire ce que tu en penses si tu as le temps.

Par contre j'ai pas saisie la logique de création du le msgbox de fin .

tu pourrais m'expliquer si ça te dérange pas la logique de création s'il te plait?

Cordialement.

PS: je vais me renseigner pour Userform et TextBox pour voir comment ça marche

bonjour Gon, bonjour le forum,

Le message renvoie :

  • R (le nombre de réponses exactes)
  • si R>1 : "réponses bonnes sur" (au pluriel) / Sinon : "réponse bonne sur" (au singulier) - voir aide sur le mot clé VBA IIf
  • NQ = nombre de questions
  • un saut de ligne Chr(10)
  • "La réponse à la question Nº 1 était : "
  • le caractère 34 = " (Guillemet)
  • "blanc"
  • le caractère 34 = " (Guillemet)
  • un saut de ligne Chr(10)
  • "La réponse à la question Nº 2 était : "
  • le caractère 34 = " (Guillemet)
  • "2"
  • le caractère 34 = " (Guillemet)
  • le point final...

Voici un exemple d'UserForm où le code final se trouverait sur le bouton Valider :

sans titre 1

Bonsoir ThauThème, Bonsoir le forum,

Merci pour ton aide j'ai pu compléter mes questions et ajouter un bouton sur ma feuille de calcul pour démarrer la macro.

Mais je ne sais pas comment utiliser userform, j'ai double cliquer dessus et coller le code que j'ai fait sur le module mais ça ne se lance pas. Tu pourrais me donner la procédure pour le mettre sous userform stp.

Cordialement.

PS: je te joins mon fichier, le code est dans le module 2 i tu peux me dire ce que t'en penses.

77quizz.xlsm (34.72 Ko)
Rechercher des sujets similaires à "questionnaire"