QCM avec macro

Fermé
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014 - 1 juil. 2014 à 10:58
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014 - 3 juil. 2014 à 13:27
Bonjour,
je souhaite créer un QCU (Questionnaire à Choix Unique) où il n'y a pas de mauvaise réponses, mais chaque réponse apporte un certain nombre de points.
A la fin du QCM, j'aimerai insérer un commentaire et une image, qui changeront en fonction du nombre total de points.
En fait, je veux faire exactement comme ce fichier qui ce trouve sur ce lien
https://www.excel-downloads.com/threads/aide-pour-creer-un-qcm-dynamique-avec-word-exel.179585/ sous le nom de qcm.xls

Mais avec mes questions et ajouter un texte et une image à la fin.
J'ai trouvé celui-ci dans un forum datant de 2006, et l'auteur ne répond (ce qui est un peu normal).
Je travail avec excel 2010 sous windows 7 et excel 2011 sous mac
Je ne connais rien en macro, donc si vous pouvez m'expliquer comment faire ou me donner une macro générale où il faudra juste modifier les questions,... Ou autre, je suis preneur.
Merci d'avance.
A voir également:

2 réponses

skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
1 juil. 2014 à 14:56
Bonjour,

C'est très simple.

Il suffis d'utiliser un userform par question.

Le bouton passe d'un userform à un autre.

Il faut aussi crée un userform par "Résultat" (fin du QCM).

Et l'avant dernier userform à un sub qui en fonction du total de points choisi différents userform.

Si tu est pas très doué en macro je peux le faire pour toi.
1
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014
2 juil. 2014 à 09:34
Bonjour, je te remercie mais j'aimerai apprendre car je vais devoir faire plusieurs QCM. Comment passe-tu d'un useform à un autre ? Cela ce fait automatiquement ?

Merci beaucoup pour ta réponse.
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
Modifié par skk201 le 2/07/2014 à 12:36
Pour cela il te faudra déjà une base en conaissence VBA tu peux trouvé un tutoriel ici : https://openclassrooms.com/fr/courses/825502-analysez-des-donnees-avec-excel/822888-premiers-pas-en-vba

Ensuite tu devras utiliser des userform et ses différents objets tu peux trouver de l'aide ici :

https://silkyroad.developpez.com/VBA/UserForm/ et https://silkyroad.developpez.com/VBA/ControlesUserForm/

Par exemple si tu as deux formulaire : "Question1" et "Question2" et que tu veux passez du 1er au 2e il te faut ce genre de code dans un Bouton :

La question peux être répondu par oui ou non avec une case à cocher

Private Sub BTN_Clik
'Code pour récupéré le résultat 
If Case_a_Cocher_Oui.Value = True Then 'Si "oui" Cocher
Sheets("Réponses").Cells(2, 2) = "Oui" 'écrire "Oui" dans la feuille "Réponses" dans la cellule B2
Elseif Case_a_Cocher_Non.Value = True Then ' Si "non" Cocher
Sheets("Réponses").Cells(2, 2) = "Non"  'écrire "Non" dans la feuille "Réponses" dans la cellule B2
Else ' Si aucune des deux cocher
Msgbox "Vous n'avez pas répondu." 'Message qui averti qu'ils n'ont pas répondu
Exit Sub 'Sortir de la procédure pour ne pas passer à la question 2
End If
Question2.Show 'Affiche la question 2
Unload Me 'Quitter la question 1
End Sub


La encore c'est incomplet car si la personne répond oui et non alors la réponse sera oui.

Mais si vous voulez je veux volontier vous coacher pour vos débuts, si vous êtes motiver.
0
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014
2 juil. 2014 à 13:07
merci pour votre réponse, je suis actuellement en train de lire le tutoriel sur VBA et je trouve ça très intéressant. Pour votre offre, j'aimerai, en effet, votre aide pour mes débuts sur VBA. Merci beaucoup
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
2 juil. 2014 à 17:36
SUper. Si vous avez des question ou des doutes n'hésitez pas a poser une question dans la section "Programmation : VBA/VB"

Il y a plien de gens pour vous aider ou vous donner des conseils.
0
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014
3 juil. 2014 à 11:10
Ok merci.
Par contre, je bloque sur un chapitre du tutoriel que vous m'avez envoyé, concernant les variables implicites et explicites et leur syntaxe. Pouvez-vous me l'expliquer ?
Merci d'avance.
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
1 juil. 2014 à 16:42
Bonjour

Un petit exemple de macro

Les questions et réponses et autres éléments nécessaires sont dans une feuille masquée Questions (Clic droit sur l'onglet de Feuil 2 et Afficher pour la démasquer)
On peut rajouter autant de questions que l'on veut la macro s'adapte

https://www.cjoint.com/?0GbqQBLJHzD

Cdlmnt
0
ELADAOUI Messages postés 13 Date d'inscription jeudi 5 juin 2014 Statut Membre Dernière intervention 3 juillet 2014
Modifié par ELADAOUI le 2/07/2014 à 09:47
Bonjour, ton exemple est franchement excellent, je te remercie.
Par contre peux-tu m'expliquer étape par étape la création de ta macro ?
Et comment modifier l'image ?
Merci d'avance
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
2 juil. 2014 à 14:41
1) macro principale lancée par le bouton lancer le questionnaire :
Private Sub CommandButton1_Click()
'rend le bouton pour lancer le jeu invisible
CommandButton1.Visible = False
' RAZ du total
total = 0
'Boucle de 1 à la valeur en A1 (le plus fort n°)
For n = 1 To Sheets("questions").Range("A1")
'affecte X à la variable R
'la variable R est modifié lorsqu'on clic sur un bouton d'option dans l'Userform QCM (voir macros jointes à QCM)
'Elle prend alors les valeurs soit D, F ou H soit les colonnes de Questions où il y a les points
r = "X"
With QCM
'Remise à faux (non coché des 3 boutons de l'UF)
.OptionButton1.Value = False
.OptionButton2.Value = False
.OptionButton3.Value = False
'Modification du n° question dans l'UF
.Label1.Caption = "Question " & n
'Modification texte question dans UF (lecture de la cellule Bn dans Questions)
.question = Sheets("Questions").Range("B" & n + 1)
'modification des 3 propositions de réponses (lecture dans Questions)
.p1 = Sheets("Questions").Range("C" & n + 1)
.p2 = Sheets("Questions").Range("E" & n + 1)
.p3 = Sheets("Questions").Range("G" & n + 1)
'affichage de l'UF QCM (et rien ne se passe tant que pas Valider la réponse ; voir macros liées à QCM)
.Show
End With
' une fois réponse validé passage à question suivante
Next
'Une fois toutes les questions posées:
'lecture du max de points possible calculé en M2 de Questions
maxi = Sheets("questions").Range("M2")
'calcul du % de bonnes réponses
pourcent = total / maxi
'lecture du % tranche haute (=>1er commentaire)en J2et du % tranche basse en J4
pmax = Sheets("Questions").Range("J2")
pmin = Sheets("Questions").Range("J4")
'lecture des 3 commentaires possibles en K2, K3 et K4
c1 = Sheets("Questions").Range("k2")
c2 = Sheets("Questions").Range("k3")
c3 = Sheets("Questions").Range("k4")
'choix du commentaire et du n° de la forme à afficher en fonction du %
If pourcent >= pmax Then commentaire = c1: k = 1 Else If pourcent <= 0.4 Then commentaire = c3: k = 3 Else commentaire = c2: k = 2
' Masque l'UF QCM
QCM.Hide
' Rend visible la forme (Sourire 1, 2 ou 3)
Shapes("Sourire " & k).Visible = True
With result
' affichage des poinst dans l'UF result
.points = total & "/" & maxi
' affichage du commentaire dans l'UF result
.com = commentaire
'affichage de l'UF result
.Show

End With
End Sub

2) les variables utilisées dans plusieurs macro ont été déclarées dans le Module 1
Public n As Integer
Public r As String
Public total As Integer
Public k As Integer

3) macro associée à la feuille2 pour les affichages
Private Sub Worksheet_Activate()
' a l'activation de la feuille :
' rend bouton pour lancer le jeu visible
CommandButton1.Visible = True
' rend les 3 formes invisibles
Shapes("Sourire 1").Visible = False
Shapes("Sourire 2").Visible = False
Shapes("Sourire 3").Visible = False
End Sub

4) macros associées à luserform QCM :

Private Sub CommandButton1_Click()
' au clic sur Valider recupere les points en fonction de la réponse dans la bonne colonne (variable r) et dans la ligne correspondant au n° de question +1 (n+1)
pts = Sheets("Questions").Range(r & n + 1)
' ajout des points au total
total = total + pts
QCM.Hide
End Sub

' au clic sur un des boutons d'option, attribue une lettre à la variable r (lettre de la colonne : voir macro principale)
Private Sub OptionButton1_Click()
r = "D"
End Sub

Private Sub OptionButton2_Click()
r = "F"
End Sub

Private Sub OptionButton3_Click()
r = "H"
End Sub


Enfin les 3 images dans la feuille sont simplement 3 formes placées dans la feuille et nommées Sourire 1, Sourire 2 et Sourire 3 et qui sont masquées quand on sélectionne la feuille (voir macro du 3)) En fonction des résultats la macro principale rend visible l'une des 3 formes
Tu peux remplacer ces formes par des images, (Excel va les nommer Image 1, Image 2 etc dans la zone Nom à gauche de la barre de formule) il te suffira dans les macros de remplacer Sourire par Image

Cdlmnt
0