IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Gérer des examens : élèves, épreuves, salles


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Gérer des examens : élèves, épreuves, salles
    Bonjour, je voudrais créer une appli ACCESS 2002 pour gérer les examens des élèves de lycée, en affectant tout un niveau dans des salles ayant un nombre de places limité. Je manipule bien Access mais je découvre vba.
    Pour commencer, j'ai 4 tables : T_Epreuve, T_Elève, T_Salle et T_Examen. T_Epreuve contient les champs Id_Epreuve (NuméroAuto et clé primaire), NomEpreuve (ex: "Francais"), DateEpreuve.
    T_Elèves contient les champs Id_Elèves (NuméroAuto et clé primaire), NomPrénomElève, NiveauElève (ex. Terminale).
    La table T_Salle contient les champs Id_Salle (NuméroAuto et clé primaire), NomSalle, Capacité (Numérique entier ; exemple d'enregistrement = 35 places). Enfin la table T_Examen contient un champ clé primaire avec NuméroAuto "Id_Examen" ; Id_Epreuve, Id_Elève et Id_Salle" comme champs clé externe.
    Question : je voudrais que la base répartisse automatiquement les candidats dans les salles en fonction de leur capacité. Je vois bien un formulaire dans lequel je sélectionnerais dans une liste déroulante le NomEpreuve ("Français"), le NiveauElève ("Première") et qui créerait par bouton de commande les enregistrements dans la table T_Examen (avec l'identifiant élève, salle, Epreuve), en changeant de salle dès que la capacité est atteinte.
    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour et sois le bienvenu parmi nous,

    Si je comprends bien :
    - Tu disposes de salles (T_Salles)
    - Tu as des épreuves à faire passer (T_Epreuve) Ne manque-t-il pas la notion de niveau ?
    - Tu as des élèves (T_Elève)

    - Tu voudrais un formulaire qui permette de définir une épreuve, un niveau (?), une date (?) et qui alimenterait T_Examen en tenant compte des salles encore disponibles (celles qui ne sont pas encore pour cette date dans T_Examen).
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bonjour, Claude.
    Oui aux 3 premières questions. Effectivement, une base normalisée nécessiterait une table "Niveaux", en relation un-à-plusieurs avec T_Elève. Cependant, les données de ma table T_Elève sont importées d'une base de l'Education nationale qui contient le niveau pour chaque élève et je m'en suis contenté jusque là.

    - Tu voudrais un formulaire qui permette de définir une épreuve, un niveau (?), une date (?) et qui alimenterait T_Examen en tenant compte des salles encore disponibles (celles qui ne sont pas encore pour cette date dans T_Examen).
    J'ai déjà défini les données de la table T_Epreuve (ex: Français, 19/6/14 ; philo, 20/6/14) ; le formulaire viendrait seulement sélectionner l'épreuve et répartir les élèves, dans les salles. Effectivement, avant la boucle, il va falloir vérifier qu'il reste des places dans la salle (j'avais pas vu ça ! )

    Merci de ton aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Ta table T_Epreuve ne contient pas le niveau : cela veut dire que, quel que soit le niveau de l’élève, son épreuve de français a lieu le 19/6/14 ?
    Tu devrais préciser :
    - peut-on loger dans un même local, plusieurs épreuves simultanément ? Ex dans un local de 25 places : 10 élèves de terminale et 7 de première ;
    - en cas de pénurie de salles, peut-on disperser les élèves d’un même niveau dans plusieurs salles.

    Peux-tu poster (dans une db format Access2000) un exemple de tes tables avec des données anonymes pour tester ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Claude.
    Ci-joint une base zippée (Access 2002) avec les tables, comme convenu.
    J'ai résolu le problème du niveau en introduisant une donnée plus précise, le MEF ou module élémentaire de formation (niveau et filière ; ex: Terminale littéraire). Désormais, une table "T_Modules_de_Formation" contenant identifiant et nom de MEF ; elle est en relation un-à-plusieurs avec la table T_Eleve (Une formation regroupe plusieurs élèves ; un élève reçoit une seule formation).
    Le formulaire désiré permettrait de choisir en zone de liste déroulante : l'épreuve (bac espagnol), le MEF (Terminale littéraire) puis d'affecter les élèves concernés dans les salles.
    - peut-on loger dans un même local, plusieurs épreuves simultanément ? Ex dans un local de 25 places : 10 élèves de terminale et 7 de première
    Oui. L'idéal serait de pouvoir choisir à chaque fois mais l'utilité principale de l'outil consiste à remplir les salles.

    - en cas de pénurie de salles, peut-on disperser les élèves d’un même niveau dans plusieurs salles.
    Là aussi, pouvoir choisir par case à cocher serait idéal. Sinon, NON (risque que les surveillants me perdent des copies !)
    merci de ta sollicitude.
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Les données du problème :

    T_Salle : les salles avec leur capacité. OK, je comprends.
    T_Epreuve : les épreuves avec leur date. OK, je comprends.
    T_Elève : les élèves et une série de colonnes dont je ne comprends pas la signification (certaines sont redondantes).

    Sachant que l’on veut régler l’affectation des salles le 19/6/14 où il n’y a qu’une seule épreuve : le Bac d’espagnol. Peux-tu m’expliquer (avec des mots) comment dans T_Elève on repère ceux qui sont concernés par cette épreuve.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Les champs redondants sont des choix d'enseignements à option par les élèves ; ils ne seront pas utiles ici et j'aurais dû les enlever pour simplifier.
    Sachant que l’on veut régler l’affectation des salles le 19/6/14 où il n’y a qu’une seule épreuve : le Bac d’espagnol. Peux-tu m’expliquer (avec des mots) comment dans T_Elève on repère ceux qui sont concernés par cette épreuve.
    Dans un premier temps, je ne gère que des épreuves obligatoires : une même épreuve est passée par tous les élèves d'un même module élémentaire de formation (MEF). Dans la table T_Eleve, la clé externe Clé_MEF identifie les élèves concernés par l'épreuve ; c'est aussi le champ clé primaire de la table "T_Modules_de_Formation". Je voudrais affecter les élèves, MEF après MEF. Par exemple, on va dire que l'espagnol est passé par les TERMINALE LITTERAIRE (Clé_MEF = 22) et les TERMINALE ECONOMIQUE ET SOCIALE (Clé_MEF =23).

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    T_Epreuve
    Au départ de l’info « Bac d’espagnol », il faut que le modèle de données permette de déduire que les MEF 22 et 23 sont concernés.
    -----
    T_Eleve
    Je constate que, pour certains MEF, les élèves sont groupés par classe.
    Je suppose que pour la répartition des salles d’examen, il faut garder les élèves groupés par classe.
    Parfois, le code_classe manque, que fait-on dans ces cas ?




    Dans les données de test, le même élève est parfois inscrit avec jusqu’à 10 MEF






    Est-ce dû à l’algorithme que tu as adopté pour « anonymiser » les noms ?
    En d’autres mots : y a-t-il un seul MEF par élève ?
    ------
    Si plusieurs épreuves sont organisées le même jour, a-t-on la garantie qu’un même élève ne soit pas concerné simultanément par plusieurs épreuves ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    T_Epreuve
    Au départ de l’info « Bac d’espagnol », il faut que le modèle de données permette de déduire que les MEF 22 et 23 sont concernés.
    ça je comptais le faire à la main, sans modéliser, mais effectivement ce serait intéressant. Je réfléchis et reviens avec.
    -----
    Je constate que, pour certains MEF, les élèves sont groupés par classe.
    Je suppose que pour la répartition des salles d’examen, il faut garder les élèves groupés par classe.
    Parfois, le code_classe manque, que fait-on dans ces cas ?
    Les élèves sans MEF ont quitté l'établissement. Je les extrais d'ordinaire par un critère "non null" par une requête. Ils doivent être exclus des épreuves.
    C'est mieux effectivement de les regrouper par classe.

    Dans les données de test, le même élève est parfois inscrit avec jusqu’à 10 MEF
    Est-ce dû à l’algorithme que tu as adopté pour « anonymiser » les noms ?
    En d’autres mots : y a-t-il un seul MEF par élève ?
    .
    Désolé, oui c'est l'algorithme (le champ Elève n°établissement de T_Eleve, identifiant unique dans la base d'origine, atteste qu'il ne s'agit pas des mêmes élèves. Oui : un seul MEF par élève

    Merci en tout cas pour ces questions qui enrichissent grandement le projet.

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Le jour des épreuves, tous les locaux renseignés dans T_Salle sont-ils libres ou bien certains sont occupés ?

    En d'autres mots T_Salle ne contient que des locaux dont on peut disposer ce jour-là.

    Si non (comme je le suppose) y a-t-il un moyen de déterminer les locaux effectivement libres ce jour-là ?
    Par exemple en déterminant au départ de T_Elève les locaux occupés par les élèves non concernés par l'épreuve.


    P.-S. tu n'as pas répondu à cette question :
    Si plusieurs épreuves sont organisées le même jour, a-t-on la garantie qu’un même élève ne soit pas concerné simultanément par plusieurs épreuves ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut Attribuer des salles en fonction des disponibilités
    Voici une 1re ébauche, si on se contente
    - d’un calcul pour une seule date à la fois ;
    - de traiter manuellement les impasses.

    Les données




    Un formulaire




    L’idée
    La mise à jour des valeurs de Clé_MEF provoque la modification du SQL de la requête



    Qui ramène ceci :




    Les items sont classés par ordre décroissant de places nécessaires.
    On lit ces enregistrements un à un et pour chacun, on lui affecte une salle encore libre, la plus petite possible qui puisse contenir toute la classe. Un message apparaît si aucune salle ne satisfait.

    Le code du module du formulaire
    À l’ouverture, on neutralise les données de l’exécution précédente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_Open(Cancel As Integer)
      Dim qry As QueryDef
      'Vider la requête SallesNecessaires
      Set qry = CurrentDb.QueryDefs("SallesNecessaires")
      qry.SQL = "SELECT Id_Eleve FROM T_Eleve WHERE Id_Eleve=0;"
      Set qry = Nothing
      'Réinitialiser les colonnes ClasseAffectee et NbreEleves dans T_Salle
      DoCmd.SetWarnings False
      DoCmd.RunSQL "UPDATE T_Salle SET T_Salle.ClasseAffectee = Null, T_Salle.NbreEleves = 0;"
      DoCmd.SetWarnings True
      'Actualiser les sf
      Me.CTNRsfBesoins.Form.RecordSource = Me.CTNRsfBesoins.Form.RecordSource
      Me.CTNRsfAffectations.Form.RecordSource = Me.CTNRsfAffectations.Form.RecordSource
    End Sub
    Après le choix des codes Clé_MEF
    On formate le SQL de la requête SallesNecessaires, on déclenche la routine Affectation() et on actualise les sous-formulaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub txtCodes_AfterUpdate()
      Dim qry As QueryDef
      'Adapter la requête SallesNecessaires
      If IsNull(Me.txtCodes) Then
          MsgBox "Pas de code sélectionné"
        Else
      Set qry = CurrentDb.QueryDefs("SallesNecessaires")
      qry.SQL = "SELECT T_Eleve.Clé_MEF, T_Eleve.Code_Classe, Sum(1) AS Nbre " _
                   & "FROM T_Eleve " _
                   & "GROUP BY T_Eleve.Clé_MEF, T_Eleve.Code_Classe " _
                   & "HAVING (((T_Eleve.Clé_MEF) In (" & Replace(Me.txtCodes, ";", ",") & ") AND ((T_Eleve.Code_Classe) Is Not Null))) " _
                   & "ORDER BY Sum(1) DESC;"
       Set qry = Nothing
      End If
      'Processus d'affectation
      Call Affectation
      'Actualiser les sf
      Me.CTNRsfBesoins.Form.RecordSource = Me.CTNRsfBesoins.Form.RecordSource
      Me.CTNRsfAffectations.Form.RecordSource = Me.CTNRsfAffectations.Form.RecordSource
    End Sub
    La routine Affectation()

    Pour chaque enregistrement levé par la requête SallesNecessaires, on recherche la plus petite salle qui puisse convenir :
    d’abord la plus petite capacité qui convient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ClasDispoNbre = DMin("Capacite", "T_Salle", "Capacite>= " & rst("Nbre") & "  and isnull(ClasseAffectee)")
    ensuite l’id de « la » salle qui a cette capacité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idClasAAffecter = DLookup("id_Salle", "T_Salle", "Capacite=" & ClasDispoNbre & "  and isnull(ClasseAffectee)")
    et on construit alors le SQL d’une requête de cette forme :




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Sub Affectation()
      On Error GoTo GestionErreur
      Dim rst As Recordset
      Dim ClasDispoNbre As Integer
      Dim idClasAAffecter
      Dim sSQL As String
      'Réinitialiser les colonnes ClasseAffectee et NbreEleves dans T_Salle
      DoCmd.SetWarnings False
      DoCmd.RunSQL "UPDATE T_Salle SET T_Salle.ClasseAffectee = Null, T_Salle.NbreEleves = 0;"
      DoCmd.SetWarnings True
      Set rst = CurrentDb.OpenRecordset("SallesNecessaires")
      Do While Not rst.EOF
        ClasDispoNbre = DMin("Capacite", "T_Salle", "Capacite>= " & rst("Nbre") & "  and isnull(ClasseAffectee)")
        idClasAAffecter = DLookup("id_Salle", "T_Salle", "Capacite=" & ClasDispoNbre & "  and isnull(ClasseAffectee)")
        'Affectation
        sSQL = "UPDATE T_Salle SET T_Salle.ClasseAffectee = """ & rst("Code_Classe") _
                     & """, T_Salle.NbreEleves =" & rst("Nbre") _
                     & " WHERE (((T_Salle.Id_Salle)=" & idClasAAffecter & "));"
        DoCmd.SetWarnings False
        DoCmd.RunSQL sSQL
        DoCmd.SetWarnings True
    AuSuivant:
        rst.MoveNext
      Loop
      rst.Close
      Set rst = Nothing
      Exit Sub
    GestionErreur:
      Select Case Err.Number
        Case 94 'on ne trouve pas de salle
          MsgBox "Problème pour " & rst("code_classe") & " avec " & rst("Nbre") & " élèves.", vbCritical
          Resume AuSuivant
        Case Else
          MsgBox Err.Number & " " & Err.Description
      End Select
    End Sub
    La db exemple est ici : http://claudeleloup.developpez.com/F...tionSalles.mdb
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Claude,
    Merci beaucoup pour ta solution. J'ai pris le temps de l'étudier, à la fois sous l'angle opérationnel pour mon projet, ainsi que pour améliorer ma lecture du SQL et VBA.
    Je retraduis ta stratégie avec mes mots : un formulaire sur lequel on saisit les formations concernées, qui les introduit en critère d'une requête, qui totalise l'effectif pour chacune des classes, puis les trie par ordre décroissant des effectifs.
    Ensuite, pour chaque classe, le code recherche dans la table T_Salle l'enregistrement ayant une capacité égale ou supérieure à l'effectif de la classe (variable ClasDispoNbre), puis l'identifiant de la salle ayant cette capacité (variable idClasAAffecter). Enfin, le code met à jour la table T_Salle, en mettant devant chaque salle une classe et son effectif.

    2 remarques
    - Une fois l'affectation des classes produites, la finalité du projet consiste à pouvoir convoquer les élèves par courrier (j'ai les adresses), afficher la liste nominative par classe et par salle. D'où mon idée de générer dans une même table (T_Examens), des enregistrements identifiant un élève, une épreuve, une salle.
    J'ai modifié la structure des tables, pour répondre à ta question "comment repérer les élèves concernés par une épreuve : la table T_Epreuve est la jonction des tables T_MEF (ex: Terminale littéraire) et T_Discipline (ex: maths, histoire) ; elle contient en clés externes les clés primaire des 2 précédentes. C'est plus conforme à la normalisation (relation de plusieurs-à-plusieurs entre MEF et discipline).
    Comme la table T_Elève et T_Epreuve contiennent la Clé_MEF, on peut déterminer quels élèves doivent assister à l'épreuve.
    - En faisant tourner ton appli, je me suis aperçu qu'il était plus opportun de remplir les salles les unes après les autres, sans chercher à les saturer. Derrière l'application, il y aura des inspecteurs qui apporteront les sujets et des surveillants qui récupèreront les copies ; si on éparpille les épreuves dans des salles non contiguës, ça va être la pagaille joyeuse. Donc affectation dans l'ordre de la table T_Salle.
    Je t'envoie la base avec les tables retouchées, si c'est plus clair.
    Bien à toi et merci encore.
    Pierre.

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Claude, bonsoir à tous,

    Je ne pars peut être pas dans la bonne direction, mais au moins ça me fera progresser dans l'écriture du code : d'abord ajouter les élèves candidats à l'examen dans la table examen, on verra plus tard pour l'affectation dans des salles à capacité limitée, par une requête mise à jour sur la table T_Examen.
    Sur un formulaire, j'ai les données de l'épreuve, avec notamment le code MEF qui identifie la formation (ex: Terminales LITTERAIRES) et qui figure par ailleurs dans la table T_Elève. Je voudrais ajouter à la table T_Examen, tous les élèves dont le Code MEF = celui de mon formulaire.
    J'ai écrit ça (et j'en suis déjà très fier !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Étiquette20_Click()
    'Débranche les messages d'alerte des requêtes Action
    DoCmd.SetWarnings False
    'Requete ajout avec critère fixe écrit dans le code
    DoCmd.RunSQL "INSERT INTO T105_Examen ( Clé_Elève ) SELECT T100_Eleve.Id_Elève FROM T100_Eleve WHERE (((T100_Eleve.[Code MEF]) = '20213019110'))"
    'Rebranche les messages d'alerte des requêtes Action
    DoCmd.SetWarnings True
    'Ok
    MsgBox "Les enregistrements ont bien été ajoutés"
    End Sub
    Mais je voudrais que la condition WHERE vienne piocher la valeur directement sur le formulaire, et non la saisir manuellement dans le code. J'ai lu l'article de Christophe WARIN sur les requêtes paramétrées et j'ai tout compris (j'étais re-fier) mais pour adapter la méthode Replace aux arguments de ma requête ajout, problème.
    Merci de votre aide !

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour Pierre,

    Je t'envoie la base avec les tables retouchées, si c'est plus clair.
    J'ai reçu ces tables (données privées !) via e-mail, jeudi soir et c'est effectivement plus clair.

    Je suis occupé à adapter la proposition de mon billet 11.

    Je crois que la bonne démarche consiste à attribuer les salles non pas élève par élève, mais plutôt classe d'élèves par classe d'élèves.

    Quand on a déterminé quelle classe va dans tel local, passer au niveau élève (pour adresser un courrier par exemple) ne posera aucun problème.

    Laisse-moi un peu de temps.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Ok, Claude, désolé pour mon impatience.
    Note quand même la possibilité pour une classe de ne pas pouvoir être contenue dans une seule salle (petite salle ; ou si on met une table vide entre chaque candidat pour éviter la fraude)

    Bien à toi,
    Pierre

  16. #16
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    J’ai ajouté deux des tables que tu m’as livrées :

    T102_Discipline et T104_Epreuve



    Cela permet de choisir une épreuve et dispense l’utilisateur de devoir introduire une liste de clé_MEF. J’ai modifié le fAffectSalles qui devient :



    N.B. L'utilisateur doit simplement choisir une épreuve dans la liste déroulante.


    Questions :
    À une épreuve, ne correspond-il qu’une seule clé_MEF ?
    Y a-t-il des épreuves l’après-midi ?
    Peut-il y avoir plusieurs épreuves le même jour ?

    L’étape suivante :
    le clic sur le bouton Enregistrer déclencherait l’alimentation d’une table dans laquelle on archive :
    la classe ;
    la salle ;
    le nbre de places encore dispo dans la classe ;
    date, heure, durée.

    Avec l'ajout de cette table dans le modèle, on pourrait :
    - adresser le courrier aux élèves ;
    - dresser les listes utiles ;
    - se servir de cette table pour déterminer les places disponibles si une autre épreuve intervient à la même date ;
    - prévoir un formulaire pour permettre de régler à la main les cas spéciaux tels que l'échec du processus d’attribution automatique ou ton problème des tables « antitriche ».

    La db est ici : http://claudeleloup.developpez.com/F...tionSalles.mdb
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Je réponds d'abord aux questions avant d'aller déballer le jouet !

    Citation Envoyé par ClaudeLELOUP Voir le message
    Questions :
    À une épreuve, ne correspond-il qu’une seule clé_MEF ?
    Oui. si deux MEF de même niveau (Terminale) passent la même matière (Anglais), on considère que ce sont des épreuves différentes.

    Y a-t-il des épreuves l’après-midi ?
    Oui.
    Peut-il y avoir plusieurs épreuves le même jour ?
    Oui aussi, et pour le même élève.

    Merci, Claude. à très bientot

  18. #18
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Si une salle est occupée à 08:00:00 pour une durée de 02:00:00, est-elle libre à 10:00:00 ou bien faut-il prévoir un battement entre la fin d'une occupation et le début d'une éventuelle autre ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Dans les faits, avec la gestion des copies, l'alimentation de la salle en brouillons, on convoque rarement dans la même salle deux épreuves à la suite. Donc : oui, un battement de 30 minutes.

Discussions similaires

  1. Répartition d'élèves en salle d'examen.
    Par shenz dans le forum Général Java
    Réponses: 18
    Dernier message: 22/11/2011, 10h05
  2. Comment gérer les notes des examens
    Par badi3a82 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/07/2009, 13h01
  3. [XSLT] Comment procéder pour gérer des langues ?
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/03/2005, 12h01
  4. Comment (si possible) gérer des dll en Asm?
    Par @drien dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 06/01/2004, 16h59
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo