Base ou formulaire defectueux
Bruno83200_6929 Messages postés 626 Date d'inscription Statut Membre Dernière intervention -
bonjour à vous
je suis dans mes premiers pas en access ;j’ai crée cette base de donnée simple de soutien scolaire pour un ami
ya 7 tables: prof;élèves;matière; prof-eleve;prof-matiere et eleve-matiere et enfin paiement
jai remplis fictivement les trois tables et jai crée un formulaire pour affecter les prof aux matieres puisque un prof peut enseigner plus q une matiere ( exemple un prof de math peut enseigner les maths et l informatique) mais ca n'a pas marché; je ne sais pas où est le prob
est ce la base est concu correctement si oui pourqoui ya un prob au niveau du formulaire
merci
https://drive.google.com/file/d/1quv1uruf3BaQ8eBPV2Vptd0-Kc8ewLpy/view?usp=drive_link
Windows / Firefox 140.0
- Trois bases
- Couper une photo en trois pour instagram - Guide
- Voici trois pannes que l’on peut rencontrer au démarrage d’un ordinateur : - Guide
- Tableau à trois entrées - Forum Excel
- Code a trois chiffre ✓ - Forum Programmation
- Entrez un nom de compte d'au moins trois caractères parmi les suivants : a-z, a-z, 0-9 ou _. - Forum Jeux vidéo
3 réponses
Bonjour,
Votre conception générale est plutôt correcte dans l'idée relationnelle.
Vous pourriez renommer les tables prof-matiere ou profMatiere (éviter les tirets dans les noms de tables ou champs dans Access).
La table prof-eleve pourrait être remplacée par une table de type cours/séances, reliant un élève à une matière et un professeur, ce qui permettrait de mieux suivre les interventions concrètes.
Pourquoi cela ne fonctionne pas ?
En regardant rapidement votre formulaire :
Vous essayez de gérer l’affectation via un formulaire simple, mais probablement :
Le formulaire est basé sur une seule table (prof ou matiere).
Vous n’utilisez pas la table associative prof-matiere comme source du formulaire.
Pour que cela fonctionne :
Le formulaire doit être basé sur la table prof-matiere (ou profMatiere).
Créez un formulaire principal affichant cette table, avec :
Une zone de liste déroulante liée au champ ID_prof (pour choisir le professeur).
Une zone de liste déroulante liée au champ ID_matiere (pour choisir la matière).
Chaque enregistrement du formulaire correspondra alors à une affectation Professeur-Matière.
Access a besoin de stocker chaque lien dans la table associative, et non directement dans les tables de base.
Solution concrète : créer un formulaire d'affectation
Allez dans Création > Formulaire > Assistant Formulaire.
Source du formulaire : table prof-matiere.
Ajoutez :
Champ ID_prof (mettez un contrôle combo-box lié à la table prof pour afficher les noms).
Champ ID_matiere (mettez un contrôle combo-box lié à la table matiere pour afficher les intitulés).
Lorsque vous sélectionnez un professeur et une matière, l'enregistrement sera créé dans la table prof-matiere.
Créer un formulaire "Affectation Prof-Matière"
Chaque ligne enregistrée représentera une liaison entre un professeur et une matière, stockée dans la table associative prof-matiere.
Préparer la table prof-matiere
Nom de la table : prof-matiere (idéalement renommez-la en ProfMatiere sans tiret).
Cette table doit avoir :
Un champ ID_Prof (clé étrangère vers la table Prof).
Un champ ID_Matiere (clé étrangère vers la table Matiere).
| ID\_PM (clé) | ID\_Prof | ID\_Matiere |
| ------------ | -------- | ----------- |
| 1 | 2 | 4 |
| 2 | 3 | 1 |
(Chaque ligne = un prof lié à une matière.)
Créer le formulaire
a) Ouvrir Access > Aller dans l’onglet Création
b) Cliquez sur Assistant Formulaire
c) Source du formulaire : choisissez la table prof-matiere (ou ProfMatiere).
d) Sélectionnez les champs :
ID_Prof
ID_Matiere
e) Validez et créez le formulaire. Ne personnalisez pas tout de suite, laissez Access créer un formulaire de base.
Modifier les zones de saisie en listes déroulantes (ComboBox)
Dans le formulaire nouvellement créé :
a) Passez en mode Création.
b) Cliquez sur la zone de saisie du champ ID_Prof.
Dans l’onglet Création, cliquez sur Remplacer par : Zone de liste déroulante.
Cliquez sur la liste, ouvrez Propriétés (F4).
Dans Source de la ligne :
SELECT ID_Prof, Nom FROM Prof ORDER BY Nom;
Dans Colonnes :
Nombre de colonnes : 2
Largeur des colonnes : 0cm;5cm (masque l'ID, affiche le nom)
Lier la colonne : 1 (ID_Prof)
Répétez la même opération pour ID_Matiere :
Source de la ligne :
SELECT ID_Matiere, NomMatiere FROM Matiere ORDER BY NomMatiere;
Enregistrez et testez
Passez en mode Formulaire.
Vous pouvez maintenant :
Sélectionner un professeur.
Sélectionner une matière.
Sauvegarder (chaque enregistrement sera une affectation stockée dans la table associative).
Vous pouvez également ajouter un Sous-formulaire
Si vous voulez voir toutes les matières associées à un prof :
Créez un formulaire principal basé sur la table Prof.
Ajoutez un sous-formulaire affichant les enregistrements de prof-matiere filtrés sur ce professeur.
Cela permettra de gérer les matières affectées à chaque professeur dans une vue plus visuelle.
Me revoilà ! Nous disions, oui on peut remplir plusieurs tables avec un seul formulaire, mais il faut un formulaire principal + sous-formulaire.
Exemple : Ajouter un prof + ses matières dans un même formulaire
Structure nécessaire :
Table Prof : contient les infos du prof (Nom, Téléphone…)
Table ProfMatiere : lie les profs aux matières via leurs ID
Relation :
Prof.ID_Prof ➝ ProfMatiere.ID_Prof
Étapes pour créer le formulaire combiné :
Étape 1 : Créer un formulaire principal basé sur la table Prof
Créez un formulaire classique avec les champs Nom, Téléphone, etc.
Étape 2 : Créer un sous-formulaire basé sur la table ProfMatiere
Faites un formulaire séparé basé sur ProfMatiere (comme vous l’avez déjà fait).
Utilisez des listes déroulantes pour choisir les matières.
Étape 3 : Intégrer le sous-formulaire dans le formulaire principal
Passez en mode Création du formulaire principal.
Glissez-déposez le sous-formulaire à l’intérieur.
Vérifiez que les champs sont liés automatiquement via :
Lien champ maître : ID_Prof
Résultat
Quand vous ajoutez un nouveau prof, vous pouvez immédiatement lui affecter plusieurs matières dans le sous-formulaire.
Cela remplit à la fois la table Prof et la table ProfMatiere.
Lien champ enfant : ID_Prof
Même principe pour Élève + ÉlèveMatière
Formulaire principal : table Eleve
Sous-formulaire : table EleveMatiere
Relation : Eleve.ID_Eleve ➝ EleveMatiere.ID_Eleve
Table Cours / Séance – Pourquoi ?
Je vous explique avec un exemple concret :
Aujourd’hui, vous reliez :
Un élève à une matière (EleveMatiere)
Un prof à une matière (ProfMatiere)
Mais… vous ne savez pas vraiment quand et comment un cours a eu lieu.
Solution : Ajouter une table Cours ou Séance
Elle vous dira :
Quand a eu lieu le cours (date, heure).
Quel élève, quel prof, quelle matière étaient présents.
Durée, lieu, prix, état du paiement, etc.
Exemple de table Cours :
| ID\_Cours | ID\_Eleve | ID\_Prof | ID\_Matiere | DateCours | Durée | Payé |
| --------- | --------- | -------- | ----------- | --------- | ----- | ---- |
| 1 | 2 | 1 | 4 | 20/07/25 | 1h30 | Oui |
| 2 | 3 | 2 | 5 | 21/07/25 | 1h00 | Non |
Avantages :
Suivi des cours réels faits.
Historique complet.
Vous pouvez générer des factures, statistiques, etc.
En résumé :
| Objectif | Méthode |
| --------------------------- | ------------------------------------------------------------- |
| Ajouter un prof + matières | Formulaire principal `Prof` + sous-formulaire `ProfMatiere` |
| Ajouter un élève + matières | Formulaire principal `Eleve` + sous-formulaire `EleveMatiere` |
| Suivre les vrais cours | Créer une table `Cours` (liant prof, élève, matière, date) |
Voilà en espérant que vous comprendrez le raisonnement !
Bonsoir Monsieur Bruno et merci pour votre réponse détaillé
j"ai suivi ce que vous m’avez dit j’ai crée un formulaire basant sur la table ProfMatiere et j’ai pu remplir la table ProfMatiere . Mais ce que je veux bien c que je puisse remplir plus d'une table a partir d'un seul formulaire
je m explique: est ce que je peut remplir la table prof et la table ProfMatiere a partir d’un seul formulaire
est ce que je peut remplir la table élève et la table EleveMatiere a partir d'un seul formulaire
a propos de la table cours/séance jai pas bien compris ce que vous voulez dire
je répète je suis debutant dans access
merci d'avance