Evaluation des résultats d`un travail réalisé sous une page web

Transcription

Evaluation des résultats d`un travail réalisé sous une page web
Evaluation des résultats d’un travail réalisé sous une page web
Positionnement du problème
Des élèves réalisent un exercice en ligne via une page
web qui contient des champs de réponses aux
questions posées. Les données sont envoyées au
serveur web (soit le serveur dispose des extensions
Frontpage, soit le serveur autorise le PHP, soit encore
à l’aide d’un script CGI sur le serveur).
Les données sont stockées directement dans un
fichier ou dans une table puis un fichier texte
téléchargeable est généré (Cf. formation php)
Pour ce travail, nous partirons du fichier résultats
nommé exerccice1.txt
Les données sont alors importées dans une feuille
de classeur Excel qui permet d’effectuer la
correction avec le même aspect qu’on le ferait
avec une page web.
Sous Excel
Créez un nouveau classeur
Enregistrez le classeur sous le nom « évaluation.xls »
Ouvrir sous Excel, le fichier des résultats exercice1.txt (format txt avec séparateur )
Suivez l’assistant
Choisissez le séparateur « tabulation », « virgule » ou « point-virgule » selon ce qui a été choisi comme
séparateur dans le formulaire d’export des données de la page web.
Lorsque vous cliquez sur « terminé », les données du fichier exercice1.txt sont stockées dans la feuille1 d’un
nouveau classeur. Il faut ensuite sélectionner les cellules A1 H50 de la feuille1, les copier dans le pressepapiers.
Ensuite il convient de coller les données à partir de la cellule AA1, (et non A1, afin que les résultats ne soient
pas visibles lorsque la feuille est ouverte et que le pointeur de cellule est en A1), dans la « feuil1 » du
classeur « évaluation.xls ». Revenir en A1.
Iufm de Reims - Jacques Bresson - Application VBA
page 1/1
Traitement des résultats
Première méthode : pas de recours à VBA
Principe : utiliser
une liste déroulante
pour choisir l’élève
dont on visualisera
les résultats
Depuis la barre
d’outils formulaire,
insérer dans la feuille,
une zone de liste
déroulante
Modifiez les propriétés de la liste
Définissez la zone où seront lues les données : Menu Format > Format de contrôle
Hauteur de la liste déroulante
La cellule J3 recevra la valeur renvoyée par la liste dès lors qu’un élève aura été sélectionné, elle désigne le
numéro de la ligne où se trouve l’élève en question dans le tableau.
La liste déroulante va présenter systématiquement 50 lignes, on le verra ce problème peut être
contourné dans la deuxième méthode envisagée infra.
Iufm de Reims - Jacques Bresson - Application VBA
page 2/2
Insérez l’image fond2.gif dans la feuille puis encadrez les cellules jouxtant les zones dans lesquelles
visualiser les résultats de chaque élève.
=INDEX(AA2:AG50;J3;2)
La fonction index recherche dans le tableau de
résultat, la valeur se trouvant à l’intersection de la
ligne de numéro "valeur contenue dans la cellule
J3" (fournie par la liste déroulante) et la deuxième
colonne du tableau de résultat.
Au départ, rien ne s’affiche car aucun nom
n’est sélectionné dans la liste déroulante.
Recommencez l’opération
pour les champs 2 à 5)
Pour éviter que ne s’affichent des zéros lorsqu’aucun élève n’est sélectionné dans la liste :
Outils options affichage : ne pas cocher « valeurs de zéro »
Deuxième méthode : Création d’un formulaire de visualisation des résultats (VBA)
Ce formulaire devra permettre de sélectionner dans une liste déroulante le nom de l’élève dont on verra les
données, pour permettre une évaluation de ses connaissances.
Outils macro visual basic editor
Insertion d’un formulaire utilisateur
Insertion userform
Iufm de Reims - Jacques Bresson - Application VBA
page 3/3
Une liste déroulante dans la fenêtre doit permettre de choisir le nom de l’élève
Cette zone de liste modifiable doit afficher les données de la colonne « nom » du tableau de résultats
(stocké en AB2 :AB50)
Donnez un nom à la zone de liste modifiable
Indiquez où se trouvent les données qu’elle devra afficher
Sélectionnez le
formulaire et nommezle « visualiser » et
donnez un titre à la
fenêtre « visualiser les
résultats »
Iufm de Reims - Jacques Bresson - Application VBA
page 4/4
Il est nécessaire de créer une macro qui saura afficher cette fenêtre de formulaire… Voir page suivante.
Sous VBA Editor, insérer un module et saisissez une nouvelle macro « afficher() »
Une variante consiste à ne pas définir le nombre de cellules du tableau de résultats que doit afficher la liste
déroulante. On n’affecte pas la propriété rowsource dans VBA. C’est alors un petit programme qui détermine
le nombre de lignes à afficher (voir ci-dessous)
Sub afficher()
'initialiser la dimension de la liste déroulante
'en fonction du nombre d'élèves stockés dans le tableau
Dim dercell As String
dercell = Range("AA2").End(xlDown).Address
visualiser.nom_eleve.RowSource = "AA2:" & dercell
'afficher la fenêtre
visualiser.Show
End Sub
Il reste à revenir dans la feuil1 (du
classeur evaluation.xls) pour créer
un bouton qui permettra d’exécuter
la macro « afficher() »
Testez cette macro dans la feuille
et enregistrez le classeur
evaluation.xls
Le formulaire doit présenter les résultats sous le même schéma que celui utilisé par l’élève pour réaliser son
exercice dans la page web. Il y a lieu d’insérer une image de ce schéma (fond.gif) dans le formulaire
Iufm de Reims - Jacques Bresson - Application VBA
page 5/5
Choix de l’image à insérer
Insertion des champs devant afficher les réponses fournies par l’élève. Pour la première réponse on donnera
par exemple le nom « champ1 » à ce contrôle.
Recommencez l’opération pour les champs 2 à 6.
Dans la fenêtre des modules, sous VBA, il est ensuite nécessaire de réaliser une procédure qui sera
déclenchée dès qu’un nom d’élève aura été sélectionné dans la liste déroulante.
Il y a lieu de construire une procédure qui affecte la première donnée relative à l’élève sélectionné (via la
zone de liste modifiable) dans le « champ1 ».
Sub rechercher()
'rechercher les réponses d'un élève
' se déplacer sur la première cellule du tableau
numligne = 2
numcolonne = 27
Cells(numligne, numcolonne).Select
'tant que la cellule ne contient pas le nom de l'élève
'se déplacer vers le bas
While ActiveCell.Value <> visualiser.nom_eleve.Value
'se déplacer vers le bas
numligne = (numligne + 1)
Cells(numligne, numcolonne).Select
Wend
' stocker les réponses de l'élève sélectionné
' dans les champs présents sur le côté du graphique
Cells(numligne, numcolonne + 1).Select
visualiser.champ1.Value = ActiveCell.Value
Cells(numligne, numcolonne + 2).Select
visualiser.champ2.Value = ActiveCell.Value
Cells(numligne, numcolonne + 3).Select
visualiser.champ3.Value = ActiveCell.Value
Cells(numligne, numcolonne + 4).Select
visualiser.Champ4.Value = ActiveCell.Value
Cells(numligne, numcolonne + 5).Select
visualiser.champ5.Value = ActiveCell.Value
Iufm de Reims - Jacques Bresson - Application VBA
page 6/6
’revenir en haut gauche de la feuille
cells(1,1)°.select
End Sub
Cette procédure rechercher() devra être
exécutée dès qu’un nom d’élève a été saisi
dans la zone de liste modifiable (liste
déroulante)
Dans le formulaire, sélectionnez la zone de
liste et par un clic-droit afficher le code qui
devra être exécuté après la mise à jour de ce
contrôle
Il suffit de spécifier que la procédure rechercher() sera appelée
Private Sub nom_eleve_Change()
Call rechercher
End Sub
Enregistrez vos modifications puis testez votre production en cliquant sur le bouton « voir les
résultats » de la feuil1 du classeur evaluation.xls.
La fenêtre doit pouvoir être refermée à l’aide d’un bouton
Créez un bouton de fermeture du formulaire auquel vous associerez une ligne d’instruction.
Bon courage pour la suite
Par exemple :
Permettre la saisie de la note relative à l’exercice réalisé par l’élève et
le stockage dans une feuille de notes dans le même classeur…
Iufm de Reims - Jacques Bresson - Application VBA
page 7/7