Gestion du timer dans la saisie des réponses à une question

Bonsoir,
Je voudrais gérer la méthode bien connue de question/réponse avec un temps accordé au répondant au delà duquel la réponse est fausse s'il n'a pas répondu ou s'il a donné une mauvaise réponse.
J'ai crée une simulation simple que je dois adapter ensuite au contexte réel mais le comportement du code est un peu étrange quelques fois.
Comment ça marche?

Quand on clique sur le bouton Démarrer, la liste des noms est affichée par intervalle de 5 secondes. J'utilise l'évènement DoEvent() pour éviter le blocage par le traitement séquentiel.
Dans cet intervalle l'utilisateur peut saisir un mot dans la cellule verte. Pour simplifier je compare cette valeur à celle de la cellule orange (par défaut "TOTO")
Si les deux mots sont égaux le score s'incrémente sinon il décrémente et s'affiche dans la cellule rouge.
J'ai ajouté un bouton Suivant (Next) qui permet de passer à la question suivante avant la fin du délai. Dans ce cas il teste la valeur saisie, incrémente la position des élément dans la table qui est en cours de parcours puis se désactive si cette position dépasse la taille du tableau. Il met donc à jour le score également.
Ce que je n'arrive pas à bien gérer à mon avis c'est l'interaction entre les deux boutons entre eux en tenant compte du délai, c'est à dire si les 5 secondes arrivent pendant que l'utilisateur saisi ou s'il clique sur Next, etc.
Merci d'avance pour toute idée pour mieux gérer cette synchronisation.
Code joint pour toute aide.
Cordialement

13timer.xlsm (26.88 Ko)

Bonsoir,

une proposition avec une boucle Do Loop "tant que l'on joue, à l'intérieure une boucle do Loop While afin de tourner 8 secondes "tant que".
Dans cette boucle le DoEvents pour rendre la main à l'utilisateur.

La gestion du "Next" est faite par la validation de la réponse en détectant le "SelectionChange" sur la feuille Excel, en somme soit le joueur à fait "entrée" ou bien l'une des flèches, ou bien la souris, bref il est sorti de la cellule réponse, il valide donc la donnée.

Il y a donc une variable "tant que" du nom de Réponse en boolean qui est à FAUX tant que le SelectionChange n'est pas activé, si elle passe à VRAI la boucle Do Loop While s'arrête car une des conditions pour qu'elle continue est que Réponse = False.

On sort donc de la boucle de chronomètre, on vérifie la valeur de la réponse, on incrémente ou pas le score et on passe à la question suivante.

La temporisation des 8 secondes est faite grace à la variable Tempo qui prend en début de boucle la valeur du Timer de l'ordinateur et la boucle tourne tant que cette valeur + 8 est au dessus du Timer de l'ordinateur.

Le fichier :

Pour sortir de la boucle Do Loop "tant que l'on joue" il suffit de tapez "Fin" en réponse.

bon si on ne joue pas le jeu la tempo s'arrête lors d'une saisie un peu longue...

n'hésitez pas si vous avez des questions.

J'ai fait une version avec OnTime, mais comme le Do Loop avec DoEvents, le chrono devient "infini" lors d'une saisie de données dans une cellule...

Le fichier :

En espérant qu'avec ces deux fichiers vous allez pouvoir poursuivre votre projet. Sinon dans mes applications il y a des QCM qui sont basés sur ces principe, mais les réponses sont à "cliquer" et non pas à taper...

@ bientôt

LouReeD

Bonsoir LouReeD,
Merci infiniment pour cet excellent travail et aide.
Je vais regarder ça dès que possible.
Encore merci.

Bonsoir,

merci de vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "gestion timer saisie reponses question"