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