Probleme liste déroulante sous formulaire

Résolu
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 - 30 sept. 2023 à 09:31
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 - 10 oct. 2023 à 10:38

Bonjour,

J’ai de nouveau besoin d’aide … J’ai beau chercher je ne comprends pas comment dépasser mon  problème.

Dans mon fichier, j’ai un formulaire avec sous formulaire.

Dans ce sous-formulaire, je cherche à avoir une liste déroulante qui propose une liste de participants en fonction d’un critère.

Ce que j’ai a priori réussi à faire ….

Mon problème est que bien que ma liste déroulante me propose bien une liste de participants filtrée en fonction de mon critère, il y a des valeurs qu’une fois sélectionnée ne s’affiche pas dans ma liste.

Concrètement ma liste affiche 3 valeurs :

  • PIED MAIN
  • MICHELE FRANZO
  • OURDA COUBOUN

Je peux sélectionner et afficher dans les champs du sous formulaire:

  • PIED MAIN
  • MICHELE FRANZO
  • En revanche pour la valeur : « OURDA COUBOUN », celle-ci s’affiche, je peux la sélectionner mais la valeur qui s’inscrit dans mon champs est « MICHELE FRANZO ».

Mon fichier si besoin : https://www.cjoint.com/c/MIEhENBliWE

merci d'avance!

5 réponses

blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
Modifié le 3 oct. 2023 à 21:43

Bonjour, je ne sais pas si c'est a peut prêt ce que vous souhaitez , mais voici une capture d'écran  d'un formulaire Access contenant non pas un Sous Formulaire, mais deux sous formulaire imbriqué l'un dans l'autre .   vous pouvez voir donc un sous formulaire Activité et qui contient un sous formulaire Lieu. dans le sous formulaire Lieu, j'ai sur code postale et localité deux listes déroulante qui sont reliée à la table T_codes_pos ( table contenant les codes postaux)   cette table est constituée des champs suivants :  Numéro (NuméroAuto sans clé primaire); Code_pos (contient les codes postaux);  Commune_min (contient le nom des communes);  code_pos_commune (contenant le code postal+ nom de commune); et Pays qui ne contint aucune données. 

La table participants  et la table Lieux  contiennent toutes les deux un champ ajouté nommé " CodeLocalite".  Ce champs CodeLocalite, fera référence au champ Numéro de la table T_codes_pos .  concernant les listes déroulantes, , ce sont des listes indépendante .    dans les propriétés de ces listes sur l'onglet  Données ,  sur source de contrôle je mets "CodeLocalite"  sur contenu,  je mets :  SELECT [T_codes_pos].[Numéro], [T_codes_pos].[Code_pos], [T_codes_pos].[Commune_min] FROM T_codes_pos;  (instruction SQL)  origine source :  Table/requête    colonne liée,  1.  Maintennat je vais sur l'onglet Format et je change  Nbre colonnes  à 3   et largeur colonnes   0cm;2.542cm;2,542cm  .

ce qui signifie pour l'onglet format que  je prends 3 colonnes  de la table t-codes-pos  qui sont :  colonne 1  =   numéro  ;  colonne 2 =  Code_pos  et colonne 3 = Commune_min .  mais pour l'affichage des valeurs dans ma liste déroulante numéro ne s'affiche pas  d'ou  le 0cm;2,542cm;2,542cm .    cela dans le but de n'afficher que les codes postaux (données de la table T_code_pos ), je fais la même chose avec l'autre liste celle qui perment d'afficher les communes, mais je change la largeur colonne  par  0cm;0cm;2,542cm  pour n'afficher que les communes .  pour faire la liaison entre mon formulaire et ma table Lieu  (T_Lieux) .   je place le  champ CodeLocalite  de la table lieu n'importe ou sur le sous formulaire Lieu  ce champ sera via le propriétés mis sur  visible = non. 

j'espère que vous m'avez compris car ce n'est pas toujours facile d'expliquer quelque chose par écrit.  je joints deux images du même formulaire, une en mode formulaire, l'autre en mode création . 

BAV

Formulaire en mode formulaire
Formulaire en mode création
Relations

1
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
4 oct. 2023 à 06:40

Bonjour,

Ce n'est pas ce que je souhaitais faire ici.

En revanche, c est quelque chose que je souhaiterai faire dans une prochaine étape.

Merci énormément pour la précision et la complétude de vos explications. 

J ai compris plein de choses en vous lisant et avec vos captures en illustration.

Sincèrement merci.

1
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481
1 oct. 2023 à 09:13

bonjour,

De quel formulaire s'agit-il, et comment arriver à reproduire le problème?

Je suis étonné par la structure de la table "Table_participants".  Plutôt que le nom du participant, je m'attendrais à y trouver un id de la table des résidents.

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
1 oct. 2023 à 10:03

Bonjour,

il s'agit du formulaire "Formulaire_interventions_animation".

Dans le sous-formulaire de ce formulaire, si tu essaies de selectionner des participants, tu verras qu'il y a 3 noms qui apparaissent. Ce qui est ce que je veux.

En effet dans la table "table_residents", tu peux voir qu'il y a quatre noms.

j'ai fait une requête dans la table participants, pour que n'apparaissent que les noms des résidents présents. Si le résident est sortie (date de sortie renseignée) alors je ne veux pas que ça apparaisse dans la liste. Ca c'est bon.

Mais dans le formulaire,pour la valeur : « OURDA COUBOUN », celle-ci s’affiche, je peux la sélectionner mais la valeur qui s’inscrit dans mon champs est « MICHELE FRANZO ».

cordialement,

0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
1 oct. 2023 à 10:16

Ce que tu décris ne correspond pas à ton fichier.  As-tu partagé la bonne version de ton fichier?

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
1 oct. 2023 à 12:19

je le remets mais j'ai retéléchargé le fichier, c'est le bon...

https://www.cjoint.com/c/MJbksvyBArE

0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
1 oct. 2023 à 15:13

Le formulaire s'ouvre avec, en sous formulaire, un extrait de la table "Table_participants": les 8 enregistrements ayant "3" comme "Table_participants_nom_seance" dans cette table.

0
Badarledur > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
1 oct. 2023 à 16:24

Oui c est ce sous formulaire qui me pose problème.  Quand je selectionne "OURDA COUBOUN ", c est MICHELE FRANZO qui s inscrit 

Je veux que quand je sélectionne "OURDA COUBOUN" dans ce sous formulaire , ce soit ""OURDA COUBOUN" qui s inscrit dans mon sous formulaire. 

Cordialement 

0
blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
1 oct. 2023 à 17:09

Bonjour, avez au préalable fait un MCD et MLD  voir un dictionnaire des données ? 

Vos relations sont elles bien définie ?  pour votre formulaire et sous formulaire, avez vous mis un champ père et un champ fils ?  avez vous fait une requête entre deux tables ?   exemple une requête de la table Participants  avec la table Activités ?     un participant peut-il faire plusieurs activités  ?     comment sont structurée vos tables ?   ce sont autant de questions qui peuvent vous aider dans la réalisation d'une base de donnnés.   


0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481
1 oct. 2023 à 21:35

Pour l'instant, il est possible, mais loin d'être confirmé, que le souci soit causé par une conception incorrecte de la base de données.

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
2 oct. 2023 à 16:48

Bonjour,

sur le fichier simplifié ci-après Database21.accdb (cjoint.com)

Je voudrais que mon champs "nom_participant" de la table "Participants" propose une liste déroulante avec le nom des résidents présents?

Le nom des résidents présents sont les résidents issus de la table "Residents" dont le champs "date_sortie" n'est pas renseignée.

Si "date_sortie" de la table "Residents" est renseignée alors on n'affiche pas le nom du résident de la table "Residents" dans la liste déroulante du champs "nom-participant" de la table "Participants", si "date_sortie" de la table "Residents" est renseigné alors on affiche le nom du résident de la table "Residents" dans la liste déroulante du champs "nom_participant" de la table "Participant".

Pourrais tu m'aider stp?

0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
Modifié le 3 oct. 2023 à 08:01

Il me semble que le filtre sur la date de sortie fonctionne bien dans la version précédente que tu as partagée.

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
3 oct. 2023 à 09:28

Oui mais je voulais voir si j'avais mal fait quelque chose ><

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
3 oct. 2023 à 10:47

Vos relations sont elles bien définie ? 

--> je crois... j'ai essayé

pour votre formulaire et sous formulaire, avez vous mis un champ père et un champ fils ? 

--> oui

avez vous fait une requête entre deux tables ?   exemple une requête de la table Participants  avec la table Activités ?   

--> oui une requête. Elle n'est basée que sur la table "residents" mais je l'utilise dans le champs "nom_participant" pour avoir une liste déroulante des résidents présents (ma requete est :" si le resident a le champs date de sortie renseigné alors ne pas l'afficher)

 un participant peut-il faire plusieurs activités  ?   

--> oui

 comment sont structurée vos tables ?   

ce sont autant de questions qui peuvent vous aider dans la réalisation d'une base de donnnés.  

0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481
3 oct. 2023 à 07:55

Tu n'as pas fait correctement le lien entre les tables residents et participants.

Comme tu l'as fait, le lien se fait sur base de la civilité du résident, alors qu'il devrait se faire sur base du numéro unique du résident.

Ce qui explique que quand tu sélectionnes un résident, il va chercher un autre résident ayant la même civilité.

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
3 oct. 2023 à 09:28

je te remercie

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
3 oct. 2023 à 10:39

j'ai reçu par mail une réponse que tu m'as faite, que je ne parviens pas à retrouver dans le fil de discussion. Je la reprends ici : 

1) où est le fichier?

--> le lien ne s'est effectivement pas mis, impossible de le retrouver.

2) Je suis étonné par la structure de la table "Table_participants".  Plutôt que le nom du participant, je m'attendrais à y trouver un id de la table des résidents.

--> c'est ici que j'ai un problème. Si pour mon champs "nom_participant" de la ta Table "participant", je choisis un type de données numérique que je relie à ma table "résidents" par le champs "numero_unique_residents" (id_residents) alors dans le sous formulaire du formulaire "interventions_animation" quand dans la deuxième colonne, je clic pour faire apparaitre la liste déroulante la liste des participants (residents qui ne sont pas sortis), j'ai un message d'erreur "la valeur que vous avez entré ne correspond pas au type de données numérique dans cette colonne". 

--> si je bascule mon champs "nom_participant" de la ta Table "participant" en type de données "texte court" alors je n'ai plus ce problème. Par contre que je retourne dans ma table-residents, que je selectionne le petit "+" à gauche de n'importe quel ligne, avant j'avais le détail des séances des activités auxquelles avaient participé le résident, maintenant j'ai un message qui me dit "cette expression présente une syntaxe incorrecte ou est trop complexe pour être évaluée.Par exemple une expression numérique peut contenir des élements trop compliqués. Essayez de la simplifier en affectant des parties à des variables". 

J'ai l'impression que le problème vient du fait que d'une part je fais un lien entre ma table résidents et ma table participants manuellement par le champs "numero_unique" pour la  table résidents et le champs "nom participant" pour la table "participants" et qu'en même temps mon champs "nom_participant" de la table "participant" est une liste déroulante basée sur la requete "resident_present".

si je ne fais que la liaison mais sans la requête. dans mon sous formulaire, j'ai une liste déroulante de la liste des résidents mais sans le filtre "date de sortie", en revanche quand je clique sur le petit "+" d'une ligne de la table "resident", j'ai bien le detail des participations du résident. A partir du moment où je construis mon  champs "nom_participant" avec une liste déroulante basée sur ma requête alors dans mon sous formulaire (et aussi dans ma table participant), j'ai bien une liste déroulante des résidents filtrés avec le critère date de sortie mais je ne peux plus cliquer sur le petit "+" d'une ligne de ma table résidents.

3) Quand tu écris "Je voudrais que mon champs ... propose une liste déroulante", il s'agit bien d'un formulaire, pas d'une table?

oui la finalité la liste déroulante c'est pour le sous formulaire du formulaire. mais je pensais que c'était lié? Si dans ma table "participant", la liste déroulante qui s'affiche pour le champs "nom_participant" alors dans mon sous formulaire qui appelle le champs "nom_participant" de la table "participant, devrait afficher la même chose, non?

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
3 oct. 2023 à 11:02

Peut-être, serait-ce plus simple pour toi de réussir à m'aider si on repartait de l'origine.

https://www.cjoint.com/c/MJdi5qAQLOE  : mon fichier épuré des possibles conneries que j'ai effectuées.

dans ce fichier, il y a un formulaire.

Dans ce formulaire, il y a un sous formulaire.

Ce que j'essaie de faire dans ce sous formulaire, c'est que quand je sélectionne une cellule de la deuxième colonne. Une liste déroulante s'affiche et propose une liste de participants qui soit filtrée.

Ce filtre est : les résidents présents.

les résidents présents sont ceux de la table "residents" dont le champs "date_sortie" n'est pas renseignée.

comment tu ferais pour parvenir à ce résultat?

0
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
3 oct. 2023 à 11:48

As-tu corrigé l'erreur que je décris en #12?

1
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
3 oct. 2023 à 13:42

As-tu corrigé l'erreur que je décris en #12?

--> non, je ne l'avais pas fait. je ne comprenais pas trop.

comme t'es revenu dessus, j'ai cherché à comprendre. j'ai compris.

Problème réglé!

tu déchires!

merci beaucoup!

1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481
Modifié le 3 oct. 2023 à 13:07

Je suppose que tu as essayé de mettre le filtre (sur la présence) dans la définition de la table participants, et que cela ne donne pas le résultat attendu.   

Je crois préférable de définir un formulaire affichant les champs de la table participants.  Dans ce formulaire, utiliser une requête filtrante comme "Contenu" du contrôle "nom_participant", qui devrait d'ailleurs plutôt s'appeller "resident". 

Utiliser ensuite ce nouveau formulaire, à la place de la table, dans ton formulaire principal, pour ajouter de nouveaux participants.

0
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5
4 oct. 2023 à 11:59

Cela ne fonctionne pas, mais sûrement ai-je mal fait quelque chose.

"Je crois préférable de définir un formulaire affichant les champs de la table participants.  Dans ce formulaire, utiliser une requête filtrante comme "Contenu" du contrôle "nom_participant", qui devrait d'ailleurs plutôt s'appeller "resident". "

1. j'ai créé un formulaire à partir de la table "participant".

2. Mon formulaire me propose bien les 3 champs de ma table.

3. J'ai inséré dans "contenu" de la table des propriétés du champs ma requête "residents_presents" (= resident de la table résidents dont le champs "date sortie" n'est pas renseignée.

Mais dans la liste déroulante correspondant au champs "nom_participant", je ne peux sélectionner qu'un seul participant. Je ne peux plus en choisir plusieurs.

Utiliser ensuite ce nouveau formulaire, à la place de la table, dans ton formulaire principal, pour ajouter de nouveaux participants.

4.J'ai remplacé la source de mon sous formulaire par ce nouveau formulaire à la place de ma table.

J'ai testé d'enregistrer des participants, puis dans un second temps de les faire sortir. Ils disparaissent quand même des enregistrements effectués .

1
badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023 5 > yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024
5 oct. 2023 à 15:21

Bon je crois que j'ai finalement réussi.

Peux tu me confirmer que le résultat obtenu correspond bien à ce que tu me proposais?

Au final, il fallait 3 formulaire :

- un formulaire 1 qui affiche les champs de la table "participant". Sur ce champs, j'applique la requête de filtre. En revanche sur ma table "participant", pour le champs "nom_participant", je n'applique pas la requête "residents_present"

- un autre formulaire 2  basée sur ma table "suivi des animations" avec le sous formulaire qui appelle la table "participant". Je remplace la table participant. Par le formulaire 1 précédent. Ce formulaire devient mon formulaire "d'ajout de participant". Il propose la liste filtrée des résidents.

- un dernier formulaire 3 basée sur ma table "suivi des animations" avec le sous formulaire qui appelle la table "participant". Je le laisse tel quel. Ce formulaire devient le formulaire de consultation. Il permet de consulter voire de modifier un participant, mais la liste des participants n'est pas actualisé par le critère de présence du résident.

Au final, si je sors un résident, dans mon formulaire 1 et 2, les noms des participants s'effacent. Mais pas dans le formulaire 3, ni dans ma table "participant". Les enregistrements résistent.

C'est bien ce que tu me proposais?

1
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
6 oct. 2023 à 07:56

J'ai ajouté des contraintes sur la table participants, pour empêcher d'avoir deux fois le même participant à la même animation.  Cela devrait prévenir les anomalies que tu as observées en utilisant le bouton d'ajout.

https://www.cjoint.com/c/MJgf0xsr8io

1
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
6 oct. 2023 à 17:49

En cliquant sur le bouton au dessus "afficher toutes les actions".  Cela ajoute des actions "dangereuses".

1
yg_be Messages postés 22787 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 mai 2024 1 481 > badarledur Messages postés 397 Date d'inscription jeudi 1 janvier 2009 Statut Membre Dernière intervention 22 décembre 2023
10 oct. 2023 à 10:38

Peux-tu marquer la discussion comme résolue?

1