Réalisation d'un QCm

Messages postés
1
Date d'inscription
vendredi 6 avril 2012
Statut
Membre
Dernière intervention
6 avril 2012
- - Dernière réponse : ptitbubu
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
- 16 avril 2012 à 22:03
Bonjour à tous,

Je souhaiterais créer un QCM pour évaluer les conniaissances de collaborateurs.
Je pensais avoir comme support powerpoint car mon questionnaire est déjà crée son ce format. Mais bien sur je peut changer.

Mon projet :
- une série de questions à choix multiples ou avec une réponses à écrire
- je souhaite envoyer ce QCM à tous mes collégues par mail
- Le but étant de générer un fichier texte ou csv des résultats regroupant toutes les réponses et que celui-ci me soit envoyer par mail automatiquement si c'est faisable. Ce qui me permettrait après de faire une analyse statistique des résultats.

Je maitrise assez bien PPT ou Ecxell par contre pour ce qui est de la progammation en VBA c'est zéro pointé.

Merci pour votre aide.
Afficher la suite 

11 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
si au stade "0 pointé", aucune autre solution (et ce n'est pas la vocation de ce forum) que d'écrire tout à ta place !
Je te suggère donc de commencer à passer du stade "0 pointé" au stade (minimum requis) connaissances "VBA espsilon".
Puis de revenir, cette démarche fondamentale ayant été accomplie, avec, au besoin, une difficulté de mise en oeuvre spécifique et isolée, en montrant le code tenté et qui bloque.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
46
0
Merci
Bonjour,
Encore un qui a bien compris l'intérêt que peux apporter l'entre-aide...

@+: Ju£i€n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
0
Merci
Bonjour,

Ce we en cherchant sur le net des exemples je suis arrivé au code suivant. Tout fonctionne plus ou moins comme je le souhaite.
Ce n'est peut être pas l'idéal et le top du top.
j'obtiens :
- l'ouverture du questionnaire
1) question sur le prénom et nom avant de poursuivre
2) défilement du QCM sans faire mentions des réponses justes ou fausses
3) à la fin création sur le bureau (je ne sais pas pourquoi ??????) d'un fichier prenomnom.txt et affichage des résultats en nb question juste/le total et en % de réussite.

Il me manque juste quelques point que j'ai pas réussit à coder
1) JE souhaiterais que le diaporama (j'utiliserais un executable) se ferme automatiquement à la fin sans intervention humaine.

2) je voudrais que le fichier créer me soit automatiquement par mail. nous avons tous la même messagerie.

3) et dans l'idéal pouvoir aussi comptabilisé toutes les réponses pas uniquement juste ou faux.

Merci pour votre aide.



'Déclaration des variables
Dim Total, Question As Integer
Dim Reponse, Nom As String
Dim Points(100) As Integer 'Déclaration du tableau qui contiendra les réponses
'Procédure pour le clic sur le bouton ICI dans la première dia
Sub Init()
'Une boîte de dialogue pour demandé le nom
Nom = ""
Do While Nom = ""
Nom = InputBox("Quel est votre Prénom et Nom ?", "Bonjour")
Loop
Total = 0 'Le total des points est initialisé
Question = 2 'La première question porte le numéro 1
Application.SlideShowWindows(1).View.GotoSlide 3 'Activation de la dia numéro
End Sub
'Procédure pour le clic sur le bouton de bonne réponse
Sub Bon()
Total = Total + 1 'Le total des points est augmenté de 1
Points(Question) = 1 'Le tableau des réponses est complété
Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
Module1.DiaSuivante 'Appel de la procédure DiaSuivante
End Sub
'Procédure pour le clic sur le bouton de mauvaise réponse
Sub Faux()
Points(Question) = 0 'Le tableau des réponses est complété
Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
Module1.DiaSuivante 'Appel de la procédure DiaSuivante
End Sub
'Procédure pour le passage à la diapositive suivante
Sub DiaSuivante()
Question = Question + 1 'Question suivante
'Activation de la dia suivante
Application.SlideShowWindows(1).View.GotoSlide Question + 1
End Sub
'Procédure pour le clic sur le point d'interrogation de la dernière dia
Sub Fin()
Dim xcl As Object 'Déclaration de la variable qui fera référence à Excel
Dim ExcelNonOuvert As Boolean
'La boîte de dialogue
x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _
& Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _
& Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire")
Fichier = Nom & ".txt"
'sauvegarde des résultats
'dans un fichier texte
'portant comme nom celui de la personne qui a répondu au questionnaire
Open Fichier For Output Shared As #1
Write #1, Nom
For i = 1 To Question - 2
Write #1, Points(i)
Next i
Close #1



Commenter la réponse de ptitbubu
Messages postés
273
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
30 décembre 2015
1
0
Merci
'Déclaration des variables 
Dim Total, Question As Integer 
Dim Reponse, Nom As String 
Dim Points(100) As Integer 'Déclaration du tableau qui contiendra les réponses 
'Procédure pour le clic sur le bouton ICI dans la première dia 
Sub Init() 
'Une boîte de dialogue pour demandé le nom 
Nom = "" 
Do While Nom = "" 
 Nom = InputBox("Quel est votre Prénom et Nom ?", "Bonjour") 
Loop 
Total = 0 'Le total des points est initialisé 
Question = 2 'La première question porte le numéro 1 
Application.SlideShowWindows(1).View.GotoSlide 3 'Activation de la dia numéro 
End Sub 
'Procédure pour le clic sur le bouton de bonne réponse 
Sub Bon() 
Total = Total + 1 'Le total des points est augmenté de 1 
Points(Question) = 1 'Le tableau des réponses est complété 
Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante() 
Module1.DiaSuivante 'Appel de la procédure DiaSuivante 
End Sub 
'Procédure pour le clic sur le bouton de mauvaise réponse 
Sub Faux() 
Points(Question) = 0 'Le tableau des réponses est complété 
Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante() 
Module1.DiaSuivante 'Appel de la procédure DiaSuivante 
End Sub 
'Procédure pour le passage à la diapositive suivante 
Sub DiaSuivante() 
Question = Question + 1 'Question suivante 
'Activation de la dia suivante 
Application.SlideShowWindows(1).View.GotoSlide Question + 1 
End Sub 
'Procédure pour le clic sur le point d'interrogation de la dernière dia 
Sub Fin() 
Dim xcl As Object 'Déclaration de la variable qui fera référence à Excel 
Dim ExcelNonOuvert As Boolean 
'La boîte de dialogue 
x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _ 
& Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _ 
& Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire") 
Fichier = Nom & ".txt" 
'sauvegarde des résultats 
'dans un fichier texte 
'portant comme nom celui de la personne qui a répondu au questionnaire 
Open Fichier For Output Shared As #1 
Write #1, Nom 
For i = 1 To Question - 2 
Write #1, Points(i) 
Next i 
Close #1


desolé juste pour voir bien le code
Commenter la réponse de Genildf
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
desolé juste pour voir bien le code

Non indenté, il n'est pas plus "buvable" que le 1er
Je ne le lis même pas (crainte de tournis)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en complément et jamais en substitution de l'aide en ligne.
Commenter la réponse de ucfoutu
Messages postés
273
Date d'inscription
lundi 12 janvier 2009
Statut
Membre
Dernière intervention
30 décembre 2015
1
0
Merci
pour fermee jpense que cela doit etre

Application.close
Commenter la réponse de Genildf
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
0
Merci
Dsl pour ce code non classique, mais je fais avec mes moyens et mes connaissance.

Application.close
ne fonctionne pas
Commenter la réponse de ptitbubu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Dsl pour ce code non classique, mais je fais avec mes moyens et mes connaissance

peut-être, mais cela ne change rien à un fait certain, lui : pénibilité de lecture que tu ne saurais imposer à ceux qui voudraient t'aider.
L'indentation du code n'est pas un luxe, mais une vraie nécessité.
Exemple :
ce bout de code fictif est indenté :
If toto = titi then
   select case blabla
      case 1,2
        voila = 5
      case 3
        voila = 8
      case else
         for i = 1 to 20
           textbox1.text = textbox1.text & i
         next
   end select
else
  for i = 1 to 20
    for j = 1 to 4
     textbox2.text = textbox1.text & i  & j
    next
  next
end if

il est lisible et analysable sans torticolis
Si non indenté, cela donne un code que seuls les masos aznalyseront, à savoir :
If toto = titi then
select case blabla
case 1,2
voila = 5
case 3
voila = 8
case else
for i = 1 to 20
textbox1.text = textbox1.text & i
next
end select
else
for i = 1 to 20
for j = 1 to 4
textbox2.text = textbox1.text & i  & j
next
next
end if

Désolé.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'e
Commenter la réponse de ucfoutu
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
0
Merci
j'ai bien compris ta remarque, j'ai donc faits au mieux pour rendre le code plus lisible.

Merci encore

'Déclaration des variables
Dim Total, Question As Integer
Dim Reponse, Nom As String
Dim Points(100) As Integer 'Déclaration du tableau qui contiendra les réponses
'Procédure pour le clic sur le bouton ICI dans la première dia
    Sub Init()
        'Une boîte de dialogue pour demandé le nom
        Nom = ""
        Do While Nom = ""
        Nom = InputBox("Quel est votre Prénom et Nom ?", "Bonjour")
        Loop
        Total = 0 'Le total des points est initialisé
        Question = 2 'La première question porte le numéro 1
        Application.SlideShowWindows(1).View.GotoSlide 3 'Activation de la dia numéro
    End Sub
'Procédure pour le clic sur le bouton de bonne réponse
    Sub Bon()
        Total = Total + 1 'Le total des points est augmenté de 1
        Points(Question) = 1 'Le tableau des réponses est complété
        Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
        Module1.DiaSuivante 'Appel de la procédure DiaSuivante
    End Sub
'Procédure pour le clic sur le bouton de mauvaise réponse
    Sub Faux()
        Points(Question) = 0 'Le tableau des réponses est complété
        Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
        Module1.DiaSuivante 'Appel de la procédure DiaSuivante
    End Sub
'Procédure pour le passage à la diapositive suivante
    Sub DiaSuivante()
        Question = Question + 1 'Question suivante
        'Activation de la dia suivante
        Application.SlideShowWindows(1).View.GotoSlide Question + 1
    End Sub
'Procédure pour le clic sur le point d'interrogation de la dernière dia
    Sub Fin()
        Dim xcl As Object 'Déclaration de la variable qui fera référence à Excel
        Dim ExcelNonOuvert As Boolean
        'La boîte de dialogue
            x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _
            & Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _
            & Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire")
            Fichier = Nom & ".txt"
        'sauvegarde des résultats dans un fichier texte portant comme nom celui de la personne qui a répondu au questionnaire
            Open Fichier For Output Shared As #1
            Write #1, Nom
            For i = 1 To Question - 2
            Write #1, Points(i)
            Next i
            Close #1
    End Sub'Procédure pour le clic sur le bouton de bonne réponse
Sub Bon()
Total = Total + 1 'Le total des points est augmenté de 1
Points(Question) = 1 'Le tableau des réponses est complété
Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
Module1.DiaSuivante 'Appel de la procédure DiaSuivante
End Sub
'Procédure pour le clic sur le bouton de mauvaise réponse
Sub Faux()
Points(Question) = 0 'Le tableau des réponses est complété
Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
Module1.DiaSuivante 'Appel de la procédure DiaSuivante
End Sub
'Procédure pour le passage à la diapositive suivante
Sub DiaSuivante()
Question = Question + 1 'Question suivante
'Activation de la dia suivante
Application.SlideShowWindows(1).View.GotoSlide Question + 1
End Sub
'Procédure pour le clic sur le point d'interrogation de la dernière dia
Sub Fin()
Dim xcl As Object 'Déclaration de la variable qui fera référence à Excel
Dim ExcelNonOuvert As Boolean
'La boîte de dialogue
x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _
& Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _
& Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire")
Fichier = Nom & ".txt"
'sauvegarde des résultats
'dans un fichier texte
'portant comme nom celui de la personne qui a répondu au questionnaire
Open Fichier For Output Shared As #1
Write #1, Nom
For i = 1 To Question - 2
Write #1, Points(i)
Next i
Close #1
End Sub
Commenter la réponse de ptitbubu
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
0
Merci
1 seul fois c'est bcp mieux non

'Déclaration des variables
Dim Total, Question As Integer
Dim Reponse, Nom As String
Dim Points(100) As Integer 'Déclaration du tableau qui contiendra les réponses
'Procédure pour le clic sur le bouton ICI dans la première dia
    Sub Init()
        'Une boîte de dialogue pour demandé le nom
        Nom = ""
        Do While Nom = ""
        Nom = InputBox("Quel est votre Prénom et Nom ?", "Bonjour")
        Loop
        Total = 0 'Le total des points est initialisé
        Question = 2 'La première question porte le numéro 1
        Application.SlideShowWindows(1).View.GotoSlide 3 'Activation de la dia numéro
    End Sub
'Procédure pour le clic sur le bouton de bonne réponse
    Sub Bon()
        Total = Total + 1 'Le total des points est augmenté de 1
        Points(Question) = 1 'Le tableau des réponses est complété
        Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
        Module1.DiaSuivante 'Appel de la procédure DiaSuivante
    End Sub
'Procédure pour le clic sur le bouton de mauvaise réponse
    Sub Faux()
        Points(Question) = 0 'Le tableau des réponses est complété
        Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante()
        Module1.DiaSuivante 'Appel de la procédure DiaSuivante
    End Sub
'Procédure pour le passage à la diapositive suivante
    Sub DiaSuivante()
        Question = Question + 1 'Question suivante
        'Activation de la dia suivante
        Application.SlideShowWindows(1).View.GotoSlide Question + 1
    End Sub
'Procédure pour le clic sur le point d'interrogation de la dernière dia
    Sub Fin()
        Dim xcl As Object 'Déclaration de la variable qui fera référence à Excel
        Dim ExcelNonOuvert As Boolean
        'La boîte de dialogue
            x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _
            & Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _
            & Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire")
            Fichier = Nom & ".txt"
        'sauvegarde des résultats dans un fichier texte portant comme nom celui de la personne qui a répondu au questionnaire
            Open Fichier For Output Shared As #1
            Write #1, Nom
            For i = 1 To Question - 2
            Write #1, Points(i)
            Next i
            Close #1
    End Sub
Commenter la réponse de ptitbubu
Messages postés
5
Date d'inscription
lundi 10 mai 2010
Statut
Membre
Dernière intervention
16 avril 2012
0
Merci
Bonjour,

Je reviens vers vous.
Car je suis arrivé à modifier mon code, pour me rapprocher de mon cahier des charges.
Tout n'est pas encore gagné.

Il me manque ne fait 1 chose :
Le fichier créer et envoyé par mail ne donne que réponse bonne ou fausse.
Et j'aimerais obtenir le même type de fichier mais avec la réponse exacte histoire de pouvoir analyser les réponses.
Pour cette partie je n'ai aucune idée.

Merci pour votre aide.

Ci-dessous mon code
'Déclaration des variables 
Dim Total, Question As Integer 
Dim Reponse, Nom As String 
Dim Points(100) As Integer 'Déclaration du tableau qui contiendra les réponses 
'Procédure pour le clic sur le bouton ICI dans la première dia 
  Sub Init() 
    'Une boîte de dialogue pour demandé le nom 
    Nom = "" 
    Do While Nom = "" 
    Nom = InputBox("Quel est votre Prénom et Nom ?", "Bonjour") 
    Loop 
    Total = 0 'Le total des points est initialisé 
    Question = 2 'La première question porte le numéro 1 
    Application.SlideShowWindows(1).View.GotoSlide 3 'Activation de la dia numéro 
  End Sub 
'Procédure pour le clic sur le bouton de bonne réponse 
  Sub Bon() 
    Total = Total + 1 'Le total des points est augmenté de 1 
    Points(Question) = 1 'Le tableau des réponses est complété 
    Reponse = "bonne." 'Cette variable sera utilisée dans le message affiché par DiaSuivante() 
    Module1.DiaSuivante 'Appel de la procédure DiaSuivante 
  End Sub 
'Procédure pour le clic sur le bouton de mauvaise réponse 
  Sub Faux() 
    Points(Question) = 0 'Le tableau des réponses est complété 
    Reponse = "fausse." 'Cette variable sera utilisée dans le message affiché par DiaSuivante() 
    Module1.DiaSuivante 'Appel de la procédure DiaSuivante 
  End Sub 
'Procédure pour le passage à la diapositive suivante 
  Sub DiaSuivante() 
    Question = Question + 1 'Question suivante 
    'Activation de la dia suivante 
    Application.SlideShowWindows(1).View.GotoSlide Question + 1 
  End Sub 
'Procédure pour le clic sur le point d'interrogation de la dernière dia 
  Sub Fin() 
    'La boîte de dialogue 
    x = MsgBox("Vous avez répondu correctement à " & Total & " questions sur " & Question - 2 & "." _ 
    & Chr(13) & "Vous avez donc " & Int(Total / (Question - 2) * 100) & "% de réussite." _ 
    & Chr(13) & "Cliquez sur le bouton OK", , "Fin du questionnaire") 
    Fichier = "C:\test.txt" 
  'sauvegarde des résultats dans un fichier texte portant comme nom celui de la personne qui a répondu au questionnaire 
    Open Fichier For Output Shared As #1 
    Write #1, Nom 
    For i = 1 To Question - 2 
    Write #1, Points(i) 
    Next i 
    Close #1 
  'Envoie mail des résultats 
    Dim ol As Object 
    Set ol = CreateObject("Outlook.Application") 
    Dim olmail As Object 
    Set olmail = ol.CreateItem(MailItem) 
    With olmail 
    .To = "xxx@xxx.fr" 
    .Subject = "Résultat QCM" 
    .Attachments.Add "C:\test.txt" 
    .Send 
  End With 
  Set ol = Nothing 
  Set olmail = Nothing 
  'suppression fichier 
    Kill "C:\test.txt" 
    Module1.DiaSuivante 
  End Sub 
  Sub Fermeture() 
    ActivePresentation.Close 
 End Sub
Commenter la réponse de ptitbubu