Aide programmation VBA

RoseMartin

XLDnaute Nouveau
Bonjour,

Je souhaiterais réaliser un questionnaire sur VBA. Cependant, je rencontre quelques difficultés :( Voilà ou j'en suis:
Le programme questionne l'utilisateur en tirant au hasard une question et en vérifiant la réponse donnée par l'utilisateur avec celle attendue. Si la réponse donnée est la bonne, alors le programme positionne en colonne A un booléen VRAI. Ainsi, la prochaine question posée ne sera pas l'une des questions correctement répondues précédemment.


Voilà: http://cjoint.com/?0EyvVJycEYe

Le support est sur la feuille quizz.

Et voilà les questions ou j'ai du mal:

Rédiger la signature de chaque sous-fonction et sous-procédure.

Remplir le corps de chaque sous-fonction et sous-procédure avec une instruction par défaut.

Déclarer les constantes COLONNE_INDICATEUR_FAIT, COLONNE_QUESTION et COLONNE_REPONSE, ainsi que la variable globale ligneMax en tête de module en spécifiant leur type et éventuellement une valeur compatible avec l'énoncé. Préciser de plus pourquoi la variable ligneMax n'est pas déclarée en constante. (fait mais je ne suis pas sure)

Remplacer le corps de chaque sous-fonction par son implémentation, en supposant que le numéro de ligne tiré par le programme est la ligne numéro 1.

Pour rappel, l'accès à la cellule d'une feuille de calcul peut s'effectuer via l'objet Cells(i, j) pour accéder la cellule de la i-ème ligne et j-ième colonne de la feuille. Utiliser autant que possible les constantes déclarées en tête de module, pour améliorer la lisibilité du programme.

Implémenter la fonction trouverNumeroProchaineQuestion.
Le programme va effectuer le tirage d'un nombre compris entre 1 et le nombre de questions renseignées dans la feuille de calcul. Puis, il va renvoyer le numéro de la première ligne trouvée pour laquelle la valeur booléenne n'est pas égale à VRAI ; c'est-à-dire pour laquelle le joueur n'a pas encore donné la bonne réponse.
Attention, à gérer correctement le numéro de la ligne de la dernière question.

Ajouter un compteur indiquant à l'utilisateur, en fin de partie, combien de fois il a joué et trouvé de bonnes réponses.

Voici la ou j'en suis:

' Macro principale
Public Sub quizz()
Dim numeroLigne As Integer
Dim actionRejouer As Integer
Dim reponse As String
Dim COLONNE_INDICATEUR_FAIT As Integer
Dim COLONNE_QUESTION As Integer
Dim COLONNE_REPONSE As Integer

' Instruction 2 : Détection de la dernière ligne utilisée pour une question
ligneMax = Cells(1, COLONNE_QUESTION).End(xlDown).Row
' Instruction 3 : Que fait la ligne suivante ?
Range(Cells(1, COLONNE_INDICATEUR_FAIT), Cells(ligneMax, COLONNE_INDICATEUR_FAIT)).Clear
' Initialisation des tirages.
Randomize
' Algorithme
actionRejouer = vbYes
numeroLigne = trouverNumeroProchaineQuestion()
While numeroLigne <> -1 And actionRejouer = vbYes
reponse = poserQuestion(numeroLigne)
If estBonneReponse(numeroLigne, reponse) Then
compterBonneReponse (numeroLigne)
Else
MsgBox ("Dommage ! " & vbCr & "La bonne réponse était : " & recupererReponse(numeroLigne))

End If
actionRejouer = MsgBox("Voulez-vous rejouer ?", vbYesNo)
numeroLigne = trouverNumeroProchaineQuestion()
Wend
End Sub

Je suis surement très loin du résultat..
Merci d'avance :D
 
Dernière édition:

bbb38

XLDnaute Accro
Re : Aide programmation VBA

Bonjour RoseMartin, le forum,
Tu auras certainement plus de chance d’avoir des réponses en joignant un petit fichier d’exemple (souvent quelques lignes suffissent).
Cordialement,
Bernard
 

bbb38

XLDnaute Accro
Re : Aide programmation VBA

Bonjour RoseMartin, le forum,
Une idée de solution avec le fichier ci-joint. Pour une version définitive, je pense que les feuilles « Donnes » et « Tirage » devront être cachées. Les réponses de la feuille « Donnees » doivent obligatoirement être inscrites en majuscules. On pourrait prévoir un formulaire pou remplir cette feuille (avec mot de passe).
Cordialement,
Bernard
 

Pièces jointes

  • RoseMartin_quizz_v3_.xls
    102.5 KB · Affichages: 58
Dernière édition:

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2