QCM avec macro
ELADAOUI
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
ELADAOUI Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
ELADAOUI Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- QCM avec macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
2 réponses
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.
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.
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
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
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
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
Merci beaucoup pour ta réponse.
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
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.
Il y a plien de gens pour vous aider ou vous donner des conseils.
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.