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 :

Requête avec une colonne variable


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Requête avec une colonne variable
    Bonjour,
    Aidez moi SVP à créer une requête à partir d'une table "tab1" contenant des colonnes relatifs aux identités des étudiants et des matières (M1, M2, ..., M20). Les enregistrements correspondants aux étudiants et leurs notes pour chaque matières. J'aime bien créer une requête (en mode création si possible ou en utilisant un code vba) qui contient l'identité et une matière renseignée dans le champ "mat" d'un formulaire "form1". Donc à travers une seule requête + un formulaire je peux voir uniquement les notes de la matière choisie dans "mat" et cette requête sera reliée à un état pour imprimer la feuille d'émargement de la matière. Je dispose l'access 2010.
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Peux-tu poster la liste des champs de ta table ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    La table contient les champs suivants : nom, prénom, id, puis les noms des matières, pour vous simplifier la tâche je les ai nomé m1, m2, m3, .... , m20 (donc au total 23 champs).

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    C'est ce que je craignais, c'est une structure "À la Excel" qui n'est pas du tout adaptée à Access.
    Access marche avec des listes, des listes de listes, des listes de listes de listes ... mais pas avec des tableaux à 2 dimensions.
    Voici la structure la mieux adaptée à Access :

    tblEleve
    ClefEleve
    Autres infos sur eleve (ex : nom et prénom de l'élève)

    un enregistrement (ligne) par élève.

    tblMatiere
    ClefMatiere
    Autres infos sur la matiere (ex : nom de la matière)

    un enregistrement par matière.

    tblMatiereEleve
    ClefMatiereEleve
    ClefEleve
    ClefMatiere
    Note
    AnneeScolaire (peut-être ?)

    en relation avec :
    • tblMatiere sur ClefMatiere
    • tblEleve sur ClefEleve


    un enregistrement par matière et élève donc dans ton cas un élève pourrait avoir 20 enregistrements en supposant qu'il prenne toutes les matières.

    À partir de cette architecture tu peux assez facilement créer (requête croisée dynamique) un tableau des élèves et des matières qu'ils étudient et ses notes.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    En complément :

    Note que si pour des raisons de saisie il est absolument nécessaire (demande des utilisateurs) de faire une table telle que la tienne alors il faut prévoir du code pour passer de la table de saisie à la table définitive en "liste" et vice-versa.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonsoir
    Je suis tout à fait d'accord avec vous concernant la structure du tableau, mais malheureusement cette structure est imposée car il s'agit d'un tableau Excel importé d'une application d'examen. J'espère trouver une solution pour créer cette requête
    Cordialement

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Le fait que les informations arrivent dans une feuille excel unique n'implique nullement de modéliser une seule table.
    Un SGBD, même aussi rudimentaire que Access, n'est pas un tableur.

    Comme un élève peut suivre plusieurs matières et qu'une matière peut être suivie par plusieurs élèves, vous devez avoir à minima 3 tables : elève, matière et lien elève/matière

    Leur structure devrait être comme suit (PK soulignées, FK suffixées par #)

    EL_eleve(EL_ident, EL_nom, EL_prenom, EL_date_nais etc.)
    MA_matiere(MA_ident, MA_code, MA_nom)
    SV_suivre(EL_ident#, MA_ident#, MA_date_deb, MA_date_fin).

    @marot_r : la table associative (que j'ai appellée SV_suivre ci-dessus) ne doit pas avoir d'identifiant propre
    Au niveau conceptuel, un identifiant n'existe que pour les types d'entité, ils sont hérités au niveau tabulaire dans les associations qui deviennent des tables.
    La PK de la table associative est donc le couple de FK {EL_ident, MA_ident}, l'ajout d'un identifiant artificiel "ClefMatiereEleve" est une redondance et un risque d'erreur !

    De plus, dans une base de données relationnelle, il n'y a pas de champs, mais des colonnes.
    Les champs sont les zones de saisie des formulaires ou les zones d'édition d'un état.
    Access mélange les notions de champs et de colonnes à cause de son interface graphique qui propose des champs de saisie en bijection avec les colonnes des tables.
    Pour autant, ce n'est pas la même chose.

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    bonjour,
    voir le fil https://www.developpez.net/forums/d2.../#post11710688 s'il peut être d'une utilité ...
    "Always look at the bright side of life." Monty Python.

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La table associative (que j'ai appellée SV_suivre ci-dessus) ne doit pas avoir d'identifiant propre
    Au niveau conceptuel, un identifiant n'existe que pour les types d'entité, ils sont hérités au niveau tabulaire dans les associations qui deviennent des tables.
    La PK de la table associative est donc le couple de FK {EL_ident, MA_ident}, l'ajout d'un identifiant artificiel "ClefMatiereEleve" est une redondance et un risque d'erreur !
    En théorie oui, en pratique non.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    En complément de ma réponse brève, en fait ClefMatiereEleve est plus un numéro séquentiel d'enregistrement qu'une vraie clef primaire. Fraudait que je pense à changer le nom.
    J'ajoute toujours un index unique composé des 2 champs joints qui lui assure la clef primaire. Cela permet aussi d'avoir un enregistrement d'association même si un des éléments est manquant ce que ne permet pas une clef primaire.
    Attention avec des Null dans les champs, Access ne garantie plus l'unicité :-(. Il faut que les 2 champs soient remplis pour être sûr de ne pas avoir de doublons. Le non test des doublons avec des Null est un peu agaçant mais en pratique pas si génant.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    En passant :

    Citation Envoyé par escartefigue
    De plus, dans une base de données relationnelle, il n'y a pas de champs, mais des colonnes.
    Quand j'ai appris les BD on parlait de champ (ou d'attribut) et pas de colonne, les colonnes c'étaient pour les tableurs :-) ... un histoire de génération sans doute :-).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Requête avec une colonne d'une autre table
    Par ivoratparis dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/06/2013, 08h23
  2. Réponses: 3
    Dernier message: 15/05/2009, 11h49
  3. gérer une colonne variable avec textread
    Par Ballim dans le forum MATLAB
    Réponses: 7
    Dernier message: 06/04/2009, 13h39
  4. Faite une requête avec une variable contenu dans un champ
    Par Space Cowboy dans le forum Débuter
    Réponses: 3
    Dernier message: 18/11/2008, 14h45
  5. requête avec une variable
    Par papilou86 dans le forum Access
    Réponses: 4
    Dernier message: 22/05/2006, 18h32

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