Programmation d'un QCM sur VBA

Bonjour à tous et à toutes,

Je viens vers vous afin d'obtenir les lumières des génies de visual basic.
En effet je suis pompier et je souhaite, pour mon travail, créer un grand QCM.

Ce QCM permettrait à mes collègues de réviser les différents référentiels pompiers de manière plus intéressante et ludique.

Je suis un grand débutant de VBA, je me suis pas mal renseigné sur la conduite à tenir pour créer un QCM et ça ne m'a pas l'air insurmontable. Mais il y a un problème...

J'ai plusieurs livres référentiels et dans chacun de ces livres j'ai environ 300 questions.
Si je suis le guide que j'ai trouvé sur internet, mes collègues vont se retrouver avec 3000 questions d'un coup .

Je souhaite créer une base de données de questions et donc que ma programmation pioche au hasard 10 questions par référentiel et me les rassemble de manière "pot pourri" pour me créer le QCM. Et donc à chaque lancement d'un QCM ce sont de nouvelles questions qui tombent.

Est-ce possible à faire? Comment faut-il faire? Connaissez-vous un logiciel spécialisé dans la progr. de QCM et simple d'utilisation?

J'espère avoir été clair et surtout désolé pour ce long mail à lire.
Merci aux courageux et bonne soirée.

2 réponses

  1. Bonjour,

    pour generer un nombre aleatoire entre 1 et 300 en vba tu peux ecrire ceci:

    
    Sub nbalea()
    Dim valeur As Integer
    
    Randomize
    valeur = Int(300 * Rnd) + 1
    
    End Sub
    
    


    ensuite pour generer une liste de 10 chiffres au hasard et differents s'inscrivant dans la plage A1:A10 de ta Feuil1, tu peux ecrire:

    
    Sub nbalea()
    
    Dim valeur As Integer
    
    Randomize
    
    For i = 1 To 10
        Do
            valeur = Int(300 * Rnd) + 1
            Cells(i, 1).Value = valeur
    
        Loop While WorksheetFunction.CountIf(Worksheets("Feuil1").Range("A1:A10"), valeur) = 0
        
    Next i
    
    End Sub
    
    


    Donc ensuite tu peux utiliser cette liste de 10 valeurs aleatoires comprises entre 1 et 300 pour faire une recherche dans ta base de donnees!

    bibivanhoa
    1
    1. Contributeur
      Bonjour

      On suppose qu'en feuille2 tu as la liste des 300 questions en colonne A à partir de la ligne 1 ?

      si oui
      proposition à adapter à ta présentation (à l'avenir,merci d'^tre plus précis dans tes questions)
      https://www.cjoint.com/?3AyoMUANbob

      les macros
      Option Explicit
      Public Qcm As Object
      '--------------------------------
      Sub nouveau_QCM()
      Dim Cptr As Integer
      '------initialisations
      Set Qcm = CreateObject("scripting.dictionary")
      For Cptr = 1 To 300
      Qcm.Add Cptr, ""
      Next
      End Sub
      '---------------------------------
      Sub questionner()
      Dim Cptr As Integer, Ligne As Integer
      Randomize
      For Cptr = 1 To 10
      Ligne = Int(Rnd * 300) + 1
      If Qcm.exists(Ligne) Then
      Sheets(1).Range("A" & Cptr) = Sheets(2).Range("A" & Ligne)
      Qcm.Remove (Ligne)
      End If
      Next
      End Sub

      Michel
      0