Sous formulaire lié à plusieurs listes déroulantes
Résolu/Fermé
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
-
5 oct. 2020 à 14:08
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020 - 29 oct. 2020 à 17:19
Loic_7447 Messages postés 49 Date d'inscription jeudi 11 juillet 2019 Statut Membre Dernière intervention 17 novembre 2020 - 29 oct. 2020 à 17:19
A voir également:
- Libreoffice base formulaire liste déroulante
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Formulaire de réclamation facebook - Guide
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
7 réponses
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
Ambassadeur
1 568
5 oct. 2020 à 16:10
5 oct. 2020 à 16:10
bonjour, je ne vois pas où, dans ton fichier, tu essaies de faire quoi, ni ne comprends ce que signifie "appliquer SELECT DISTINCT à la deuxième liste".
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
6 oct. 2020 à 07:58
6 oct. 2020 à 07:58
J'aimerais que lorsque l'utilisateur sélectionne un type d'outil dans la première liste, toutes les références de ce type d'outil apparaissent, et que si il décide de sélectionner en plus un détail dans la deuxième liste, toutes les références de ce type d'outil plus ce détail apparaissent.
Actuellement, dans la deuxième liste, chaque détail de chaque outil apparait.
Or il y en a en commun. J'aimerais qu'il n'y ai qu'une seule fois le nom de chaque détail (j'ai essayé via la commande SQL "SELECT DISTINCT").
Actuellement, dans la deuxième liste, chaque détail de chaque outil apparait.
Or il y en a en commun. J'aimerais qu'il n'y ai qu'une seule fois le nom de chaque détail (j'ai essayé via la commande SQL "SELECT DISTINCT").
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
1 568
6 oct. 2020 à 09:59
6 oct. 2020 à 09:59
tiens, en fait, je ne trouve pas de formulaire nommé "#f_rechercher_type".
j'avais probablement regardé un autre formulaire.
j'avais probablement regardé un autre formulaire.
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
1 568
6 oct. 2020 à 10:05
6 oct. 2020 à 10:05
tu écris "je n'arrive pas à appliquer SELECT DISTINCT à la deuxième liste" et "j'ai essayé via la commande SQL "SELECT DISTINCT"", et tu n'expliques pas le résultat obtenu, ni en quoi cela n'est pas ce que tu attends.
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
Ambassadeur
1 568
6 oct. 2020 à 10:11
6 oct. 2020 à 10:11
je vois que tu fais
pourquoi inclus-tu ID?
SELECT DISTINCT [#tstock].ID, [#tstock].DETAIL
pourquoi inclus-tu ID?
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
6 oct. 2020 à 11:58
6 oct. 2020 à 11:58
Pour la commande SQL, j'ai expliquer un peu plus haut mais j'ai du mal m'exprimer.
J'aimerais faire des listes en cascade.
Dans ma table source "#tStock", j'ai 220 lignes (certaines références sont en plusieurs fois et il n'y a que deux types d'outils différents).
Ma deuxième liste "liste_spé" me donne les 220 détail des outils (un par référence donc). Or, il n'y a que 4 ou 5 détails différents.
J'aimerais que ma "liste_spé" regroupe et me donne que les 4 ou 5 détails différents, qui lorsque j'en sélectionne un, me donne toutes les références avec ce détail.
Je suis passé par "SELECT DISTINCT" car c'est la méthode que je connais, mais ça n'a pas l'air d'être la bonne.
J'ai inclus ID car c'est ma clé primaire. J'ai essayé sans, et la liste déroulante ne me sort aucun résultat ... J'en ai donc déduit qu'il est nécessaire.
Je pense que le SELECT DISTINCT s'applique au champ ID, qui n'a aucun doublon (car clé primaire). Or je ne sais pas comment régler ceci.
J'aimerais faire des listes en cascade.
Dans ma table source "#tStock", j'ai 220 lignes (certaines références sont en plusieurs fois et il n'y a que deux types d'outils différents).
Ma deuxième liste "liste_spé" me donne les 220 détail des outils (un par référence donc). Or, il n'y a que 4 ou 5 détails différents.
J'aimerais que ma "liste_spé" regroupe et me donne que les 4 ou 5 détails différents, qui lorsque j'en sélectionne un, me donne toutes les références avec ce détail.
Je suis passé par "SELECT DISTINCT" car c'est la méthode que je connais, mais ça n'a pas l'air d'être la bonne.
J'ai inclus ID car c'est ma clé primaire. J'ai essayé sans, et la liste déroulante ne me sort aucun résultat ... J'en ai donc déduit qu'il est nécessaire.
Je pense que le SELECT DISTINCT s'applique au champ ID, qui n'a aucun doublon (car clé primaire). Or je ne sais pas comment régler ceci.
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
1 568
6 oct. 2020 à 12:55
6 oct. 2020 à 12:55
peux-tu faire un petit effort, et préciser le nom correct du formulaire dont il s'agit?
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
1 568
6 oct. 2020 à 13:01
6 oct. 2020 à 13:01
ta déduction n'est pas correcte.
tu as construit ta liste sur base d'une requête qui retourne deux colonnes, la seconde étant DETAIL.
tu dois maintenant construire la liste sur base d'une requête qui ne retourne qu'une seul colonne.
tu pourrais adapter la requête pour continuer à retourner deux colonnes, mais ce n'est pas très propre.
tu as construit ta liste sur base d'une requête qui retourne deux colonnes, la seconde étant DETAIL.
tu dois maintenant construire la liste sur base d'une requête qui ne retourne qu'une seul colonne.
tu pourrais adapter la requête pour continuer à retourner deux colonnes, mais ce n'est pas très propre.
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
>
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
6 oct. 2020 à 15:52
6 oct. 2020 à 15:52
Voici la commande mise à jour et fonctionnelle dans le formulaire "f_chercher_type" :
Merci pour ce point !
SELECT DISTINCT [#tStock].DETAIL, [#tStock].DETAIL FROM [#tStock] WHERE ((([#tStock].TYPE)=[liste_outils]));
Merci pour ce point !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
6 oct. 2020 à 16:05
6 oct. 2020 à 16:05
Maintenant j'aimerais que mon sous formulaire affiche le stock en fonction de ce que l'utilisateur saisi : si il ne sélectionne que le type d'outil, il doit afficher tous ceux en stock, si il sélectionne en plus le détail, le résultat doit s'affiner en conséquence.
Pour ce faire, j'ai définit ma requête "rAffichage" comme objet source de mon sous-formulaire. Dans la requête, j'ai essayé de remplir la ligne "critère" des champs "TYPE" et "DETAIL", mais je ne sais pas vraiment quoi remplir pour que cela fonctionne.
Pour ce faire, j'ai définit ma requête "rAffichage" comme objet source de mon sous-formulaire. Dans la requête, j'ai essayé de remplir la ligne "critère" des champs "TYPE" et "DETAIL", mais je ne sais pas vraiment quoi remplir pour que cela fonctionne.
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
1 568
6 oct. 2020 à 18:28
6 oct. 2020 à 18:28
tu veux, au moment où le bouton "recherche" est cliqué, appliquer un filtre aux données du sous-formulaire. un filtre est, dans ce cas, parfaitement suffisant, inutile de chipoter dans la requête source du sous-formulaire.
yg_be
Messages postés
23463
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 février 2025
Ambassadeur
1 568
6 oct. 2020 à 18:25
6 oct. 2020 à 18:25
avant d'aller plus loin, je pense utile de mettre un peu d'ordre dans ta base:
- tu te prends les pieds dans de multiples objets qui se ressemblent, ont des noms similaires, et sont plus ou moins utilisés. par exemple, tu m'avais indiqué que le formulaire était #f_rechercher_type", et ce formulaire n'existe pas.
- tu utilises simultanément deux tables, #tStock et #tStock2, qui ont des structures et/ou des contenus différents.
- tu as une table tOutil, que tu utilises parfois, tandis que tu enregistres parfois le nom de l'outil, et pas son id, dans la table stock.
qu'en penses-tu?
- tu te prends les pieds dans de multiples objets qui se ressemblent, ont des noms similaires, et sont plus ou moins utilisés. par exemple, tu m'avais indiqué que le formulaire était #f_rechercher_type", et ce formulaire n'existe pas.
- tu utilises simultanément deux tables, #tStock et #tStock2, qui ont des structures et/ou des contenus différents.
- tu as une table tOutil, que tu utilises parfois, tandis que tu enregistres parfois le nom de l'outil, et pas son id, dans la table stock.
qu'en penses-tu?
Loic_7447
Messages postés
49
Date d'inscription
jeudi 11 juillet 2019
Statut
Membre
Dernière intervention
17 novembre 2020
29 oct. 2020 à 17:19
29 oct. 2020 à 17:19
J'ai (enfin) réglé mon problème !
Dans mon formulaire #fRecherche_type j'ai donc :
- Une 1ere liste déroulante "liste_type"
- Une 2eme liste "liste_detail"
- Un sous formulaire "Resultats" (la table principale) pour afficher mes résultats
J'ai créer 3 requêtes différentes. Dans chacune, j'ai mis tous les champs de ma table source, mais j'ai remplis différents critères :
- 1ere : #rCritère_type ; Critère dans le champ type :
- 2eme : #rCritère_détail ; Critère dans le champ detail :
- 3eme : #rCritère_type+detail ; Cette fois ci, j'ai mis les deux derniers critères dans la même requête.
Avec ceci, j'ai créer deux codes VBA :
- Un qui s'active après une selection dans liste_type :
Si le champ "liste_detail" est vide et qu'on sélectionne quelque chose de "liste_type", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.
- Un autre après une sélection dans liste_detail :
Si le champ "liste_type" est vide et qu'on sélectionne quelque chose de "liste_detail", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.
Voila comment j'ai réaliser mon formulaire !
Dans mon formulaire #fRecherche_type j'ai donc :
- Une 1ere liste déroulante "liste_type"
- Une 2eme liste "liste_detail"
- Un sous formulaire "Resultats" (la table principale) pour afficher mes résultats
J'ai créer 3 requêtes différentes. Dans chacune, j'ai mis tous les champs de ma table source, mais j'ai remplis différents critères :
- 1ere : #rCritère_type ; Critère dans le champ type :
[Formulaire]!#fRecherche_type.[liste_type]
- 2eme : #rCritère_détail ; Critère dans le champ detail :
[Formulaire]!#fRecherche_type.[liste_detail]
- 3eme : #rCritère_type+detail ; Cette fois ci, j'ai mis les deux derniers critères dans la même requête.
Avec ceci, j'ai créer deux codes VBA :
- Un qui s'active après une selection dans liste_type :
Private Sub liste_type_Change() If (IsNull(Forms![#fRecherche_type]![liste_detail])) Then Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type" Else Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type+detail" End If Forms![#fRecherche_type]![Resultats].Requery End Sub
Si le champ "liste_detail" est vide et qu'on sélectionne quelque chose de "liste_type", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.
- Un autre après une sélection dans liste_detail :
Private Sub liste_detail_Change() If (IsNull(Forms![#fRecherche_type]![liste_type])) Then Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_detail" Else Forms![#fRecherche_type]![Resultats].SourceObject = "Query.#rCritère_type+detail" End If Forms![#fRecherche_type]![Resultats].Requery End Sub
Si le champ "liste_type" est vide et qu'on sélectionne quelque chose de "liste_detail", on affiche tous les résultats correspondants, sinon, on affiche les résultats des type avec le détail correspondant.
Voila comment j'ai réaliser mon formulaire !