La puissance des macros sur Excel permet de donner un questionnaire avec sa correction incluse mais protégée par un mot de passe.

Un bon outil pour les enseignants : ils vont pouvoir donner un questionnaire à leurs élèves qui auront, dès reception du mot de passe, accès à la correction et leur note. Vous pouvez, bien sûr, utiliser librement ce fichier : je vous joins le code VBA avec les commentaires pour que vous puissiez éventuellement améliorer ou modifier ce document.
L’IA Mistral m’a beaucoup aidé pour réaliser ce travail. 😄
Vous pouvez télécharger ce fichier questionnaire.xlsm pour le tester.
À l’ouverture, il est possible qu’Excel vous annonce que ce fichier est bloqué car venant d’un autre ordinateur, il y a risque. Il faudra le débloquer (propriétés > clic droit > débloquer) puis autoriser l’exécution des macros sous Excel.
Vous pouvez alors répondre aux questions posées. Il faudra cliquer sur Afficher la correction et la note pour voir le nombre de réponses justes et votre note. Cette note sera donnée en fonction du nombre de questions posées, elle sera ensuite convertie en note sur 20.

Construction

J’ai intégré dans ce fichier Excel une seule macro simple sous forme de module.
Le bouton “Afficher la correction et la note” est associé au module MasquerAfficherEtColorier

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Sub MasquerAfficherEtColorier()
	' Vérification du mot de passe
	' If InputBox("Entrez le mot de passe :", "Accès sécurisé") <> "votre mot de passe" Then
		' MsgBox "Mot de passe incorrect !"
	   ' Exit Sub
	' End If

	' Afficher/Masquer les colonnes F et G
	Static colonnesMasquees As Boolean
	colonnesMasquees = Not colonnesMasquees
	Columns("F:G").EntireColumn.Hidden = colonnesMasquees

	' Comparer et colorier les cellules C2:C21 et G2:G21 en ignorant les espaces, les accents et la casse
	Dim rng As Range
	Dim cell As Range

	Set rng = Range("C2:C21")

	For Each cell In rng
		If Not colonnesMasquees Then
			Dim texteC As String
			Dim texteG As String

			texteC = WorksheetFunction.Trim(WorksheetFunction.Substitute(cell.Value, " ", ""))
			texteG = WorksheetFunction.Trim(WorksheetFunction.Substitute(cell.Offset(0, 4).Value, " ", ""))

			If StrComp(texteC, texteG, vbTextCompare) <> 0 Then
				cell.Interior.Color = RGB(255, 0, 0)
			Else
				cell.Interior.ColorIndex = xlNone
			End If
		Else
			cell.Interior.ColorIndex = xlNone
		End If
	Next cell

	' Compter et afficher les cellules rouges dans C2:C21 en G23
	Dim plageRouge As Range
	Set plageRouge = Range("C2:C21")

	Dim nbCellulesRouges As Long
	nbCellulesRouges = 0

	For Each cell In plageRouge
		If cell.Interior.Color = RGB(255, 0, 0) Then
			nbCellulesRouges = nbCellulesRouges + 1
		End If
	Next cell

	Range("G23").Value = nbCellulesRouges
End Sub

Explications

Pour un accès sécurisé avec un mot de passe, enlevez les commentaires (’) les lignes 2, 3, 4 et 5.
Vous pouvez faire les modifications suivantes :

  • modifier le mot de passe (votre mot de passe)
  • changer les colonnes à masquer (F et G)
  • modifier les plages des cellules à comparer (C2:C21 et G2:G21)
  • choisir une couleur différente pour la mise en évidence des erreurs RGB(255,0,0) rouge dans ce cas)

Dans le type de réponses, on peut choisir une liste déroulante (les données sont dans la colonne Q qui est masquée), un texte, un nombre, une fraction, un pourcentage etc. Le calcul des différences ne tiendra pas compte des majuscules, des accents ou des espaces.

Protection de la macro

Pensez à protéger votre code VBA car il est très facile de trouver le mot de passe qui affiche la correction.
Pour ajouter un mot de passe, faites un clic droit sur le projet VBA du classeur concerné à partir de l’éditeur et sélectionnez Propriétés de VBAProject :
Cliquez sur l’onglet Protection, cochez la case, entrez le mot de passe et validez.
Pour vérifier si cela a bien fonctionné, entrez au moins une ligne de code VBA, enregistrez le classeur au format xlsm et fermez le classeur.
À la prochaine ouverture, le mot de passe sera exigé pour accéder au projet VBA.
Cette protection est suffisante pour empêcher un utilisateur lambda d’accéder au projet VBA, mais sachez qu’il existe des techniques permettant à un utilisateur averti d’accéder au code VBA malgré le mot de passe.

Calcul du nombre d’erreurs et affichage de la note

Le nombre d’erreurs s’affichera automatiquement en G23 grâce à la macro.
Une soustraction en G24 donnera la note sur le nombre de questions posées : =NBVAL(F2:F21)-G23
Convertir en note sur 20 en G25 : =G24/NBVAL(F2:F21)*20

Résultat