Comment réaliser un quiz/questionnaire à l’aide des macros

En juin dernier, je vous proposais d’utiliser un petit module pour réaliser un quiz/questionnaire sous PowerPoint. Je vous propose aujourd’hui, une version plus élaborée faisant appel aux macros. La différence ? Cette version permet de calculer le score obtenu et affiche une image contextualisée en fonction du score obtenu. Contrepartie de cette amélioration, un sujet bien plus complexe à maîtriser !
Quelques explications, plus bas dans la page, sous les vidéos.
Dans la partie présentation du quiz, je parle d’un bouton Fin qu’on ne retrouve pas dans la vidéo : après réflexion, j’ai préféré attacher le code correspondant (initialisation des variables) au bouton Commencer.

 

La création de ce quiz se déroule en deux temps :

  • phase 1 : élaboration du questionnaire
  • phase 2 : rédaction du code et tests correctifs;

L’élaboration du questionnaire

Les diapositives composant le questionnaire ne présentent aucune difficulté particulière : il s’agit de simples dias dans lesquelles les réponses sont constituées d’images mais vous pourriez vous contenter de zones de textes (il est important de dessiner une zone de texte indépendante par réponse possible) ou même un mixte des deux : une réponse image/une réponse texte !

Comme la structure de la diapositive de test est toujours identique, vous pouvez réaliser un masque spécifique mais cela est optionnel et ne change rien au niveau du code.

Dans la version finale, j’ai préféré dessiner une forme à l’aide des outils de dessin pour Question suivante qu’utiliser le contrôle bouton de la barre développeur car cette option est finalement plus simple à mettre en oeuvre.

La rédaction du code

Les variables

Comme précisé dans la vidéo, j’utilise toujours une combinaison de minuscules/majuscules dans le nom de mes variables ou contrôles.

Je fais référence à ces variables/contrôles dans mon code en les saisissant en minuscules. Ainsi, lorsque je valide ma saisie, je vois immédiatement ceux qui sont mal orthographiés : vba ne modifie pas la graphie, ce qui indique une faute de frappe.

Je fais parfois référence à certains contrôles en indiquant le nom du masque (ex : slidelayout19) quand le même nom de variable existe sur des masques (slidelayout en anglais) différents : ne pas préciser le masque générerait un message d’erreur.

Les propriétés utilisées sont les suivantes :

  • Application.ActivePresentation.SlideShowWindow.View.Next : permet de passer à la diapositive suivante.
  • nomdel’objet.visible : permet d’afficher une image (true) ou non (false).

Le code init() met tous les paramètres à 0 et rend toutes les images visibles.

Le code ScoreFinal est à associer au bouton figurant sur la dernière diapositive de question.

Enfin, j’ai utilisé l’instruction conditionnelle If pour tester le score final. Sa structure est la suivante :

If test then

instructions 

elseif test then

instructions

elseif test then

instructions

else

instructions

end if

 

On peut avoir autant de Elseif qu’il y a de conditions -1 puisque pour la dernière, on utilisera Else.

La version ci-jointe du diaporama est quelque peu différente : la slide de score intermédiaire affiche également la bonne réponse mais je gage que vous auriez su gérer ce point ;-).

Le nom de certains contrôles ont pu être modifiés.