Base ou formulaire defectueux

JADDRISS Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
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

3 réponses

Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141
 

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.


1
Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141
 

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 !


1
Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141
 

Exemple de table Cours :
 

En résumé :

0
Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141 > Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention  
 

J'ai renvoyé les exemples en photos, car la mise en page est en vrac !

0
JADDRISS Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour Monsieur Bruno et merci encore pour le temps consacré à me répondre

je vais suivre vos conseils et si jamais je trouve des difficultés dans mon chemin je vous contacterai si vous permettez biensur

bonne journée à vous

0
Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141 > JADDRISS Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 

Il n'y a aucun souci, je vais m'absenter une dizaine de jour, mais je vous adresse un message privé.

0
JADDRISS Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 

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 

0
Bruno83200_6929 Messages postés 626 Date d'inscription   Statut Membre Dernière intervention   141
 

Oui, mais pas avec un formulaire seul : il faut un formulaire principal + sous-formulaire. Je reviens dès que j'ai un moment vous guider !

1