[ACCESS] Valeur liste déroulante dependante [Fermé]

Signaler
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
-
 loustic -
bonjour à tout le monde

voilà ma question j'ai besoin d'aide svp:

voilà j'ai ds une formulaire une liste déroulante avec des valeurs choises par moi, et une autre liste déroulante

je vouddrais que en fonction de la valeur de la 1ère liste déroulante, les valeurs de la 2ème changent est ce possible et comment peut on faire svp ?

merci d'avance

15 réponses

Messages postés
2
Date d'inscription
dimanche 17 septembre 2006
Statut
Membre
Dernière intervention
15 juin 2007
5
Ca y est, j'ai trouvé une réponse intelligente et simple sans avoir a se tapper du code... voir
http://www.info-3000.com/access/listerestreinte/index.php

Ca marche merveilleusement bien et c'est simple
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
Bon, on peut décomposer:

Tu choisis d'abord sur quel champ tu veux effectuer une recherche: bâtiment, technicien, type de travail...

Puis tu sélectionnes, par exemple un technicien ou un bâtiment et tu listes ce qui les concerne,

Puis tu choisis un enregistrement défini. C'est juste?

tu pourrais le faire avec trois listes

La première liste serait une liste de champs ou une liste de valeurs.

Dans les propriétés, sous l'onglet événement, sur clic, procédure événementielle tu tapes:

Dim SQL As String
SQL = "SELECT DISTINCT TaTable." & Liste1 (ou son nom, évidemment)
SQL = SQL & " FROM TaTable;"
Liste2.RowSource = SQL
Liste2.Requery
End Sub

La seconde afficherait la liste des techniciens, batiments...

Tu procèdes de la même manière en te référant à la liste2 mais tu dois cette fois créer une zone de liste multicolonnes comprenant la clé pour pouvoir ensuite pointer sur un enregistrement défini et ton code SQL ne doit plus comporter de "Distinct"

C'est plus clair? (je suis pas sûr...) Les zones de liste peuvent être créées avec l'assistant mais il faut veiller à ce que les deux premières ne comportent qu'une colonne (Access ajoute automatiquement la colonne clé avec une largeur de 0 cm (les résultats seraient donc "invisibles"))...
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
Bonsoir,


pas de pb...

dans la requête qui définit les données de ta deuxième liste, tu ajoutes une condition à la fin de ton instruction:
Select... WHERE LeChampATrier=LaValeurRenvoyéeParLaPremièreListe;

Ensuite, dans les propriétés de la première liste, onglet évènement, après MAJ: NomDeLaDEuxièmeListe.Requery
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
je m'y suis mis un peu mais non je ne comprend pas , mais bon c'est moi qui n'est pas ne niveau sur le coup tant pis ... j'y reviendrai plsu tard en attendant je poste un autre sujet plus simple lol mais je ne suis pas sur que l'on puisse
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
merci

en fait je n'ai pa été assez complet dans ma description je pense
ou je ne cromprend pa la réponse ce qui est fort possible vu mon niveau lol c'est pour çà je me permets de te reposer la question stp

en fait la valeur de la deuxième n'est pas le résultat d'une requete baséé sur la valeur de la première

voilà ce que j'aimerai: ds la première liste je choisi "batiment" et ds la deuxième j'obtiens les nom des batiments que j'ai tapé (par exemple" çàd "A, B C..." si je choisie travaux ds la 1ère je veux avoir "electricité, plomberie..."

etsce la meme chose ?
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
Tu devrais me donner la structure de ta ou de tes tables...

Pour que cela fonctionne, il faut que "quelque chose" permette de faire un tri sur la deuxième liste et qu'elle soit fondée sur une même table ou requête.

Selon l'exemple que tu donnes, il est peu probable qu'une même table regroupe toutes tes données.

On peut aussi complètement changer la requête sur laquelle est fondée la liste en VB.
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
voilà je vais essayer d'expliquer mon projet: en fait je dois gerer les demandes de travaux ds les divers batiments pour la fac où je bosse. ces demandes sont regroupées ds une table ds les champs sont:

-Numero demande
-date de la demande
-nom du batiment (A , B , C...)
-nom de la salle
-type de travaux (elec plomberie...)
-nom de l'agent faisant le travail (X; Y ; Z...)
-date de realisation
-delais
-durée
-cout
-état (en cours ou terminé)

je n'ai qu'une table

en fait je veux faire uen sorte de menu général pour la recherche des demande par critéres:
çàd que ds la page principale je voudrais que ds une prelmière liste déroulante on puisse choisir de chercher par batiment, par agent ou encore type de travaux par exemple

et que si on choisit batiment ds la liste déroulante d'a coté on ai la liste de ts les batiments, ou encore si on choisit type d etravaux a octé on ai le choix entre elec, plomberie....

j'espere avoir été plus clair
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 020
en fait la valeur de la deuxième n'est pas le résultat d'une requete baséé sur la valeur de la première
C'est ce que tu as dit avant et tu nous dis le contraire maintenant :
et que si on choisit batiment ds la liste déroulante d'a coté on ai la liste de ts les batiments

T'es versé dans le paradoxe, toi ! ;-)))

Ta deuxième liste sera constituée par une requête qui va chercher tous les éléments rattachés à la valeur choisie dans la première liste... Il faut juste bien faire attention à la modélisation de ta base...
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
c'est vrai je m'exprime pa trés bien dsl

pour simplifier p-e imaginons que je puisse avoir la liste de tous les batiments par une requete + regroupement sur le champs batiment qu"'on appele "requete liste batiment" (2 voire plus requetes distinctes) et le meme principe avec "requete liste travaux" peux tu me redonner les etapes pour selon le choix de la liste 1 faire apparaitre les resulat de la requete "liste travaux" ou liste batiment stp"

dsl sur ce coup la je suis long à la comprenure ;)
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
Rebonjour...

Tu peux sélectionner dans ta première liste grâce à l'argument DISTINCT la liste de tes bâtiments afin d'éviter les doublons:

SELECT DISTINCT TaTable.NomBâtiment FROM TaTable;

puis utiliser la valeur renvoyée comme critère de tri dans la requête de la deuxième liste.
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
dsl ms je n'arrive pa à comprendre les solutions sur ce coup là ou j'ai tres mal exprimé mon problème :(

en fait ma deuxième liste va rechercher les valeurs ds la requete "requete" (pour faire simple) du style:

SELECT DISTINCT NomTable.[Nom du champ]
From NomTable

la variable étant [Nom du champs] je ne comprends pa comment recupérer sa valeur à partir du choix de la liste 1
Messages postés
86
Date d'inscription
mercredi 31 janvier 2007
Statut
Membre
Dernière intervention
27 février 2008
9
re merci pour cette réponse détaillée je vas essayer de m'y plonger dedans dés que possible voir si je comprens je te tiens au courant :)
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
Bonne chance!
n'hésite pas à revenir si ça coince...
Messages postés
2
Date d'inscription
dimanche 17 septembre 2006
Statut
Membre
Dernière intervention
15 juin 2007
5
J'ai très bien compris la question si jamais tu as réussit, pourrait-tu me faire savoir?

Dans une liste déroulante j'ai les types d'articles, et dans une deuxième les descriptions. Les deux réfèrent à une meme table. J'ai réussit à mettre une condition et le deuxième champ s'adapte, mais voila si je modifie le premier champ «type» les valeurs du deuxième demeurent comme elles étaient le premier coup, comme si la lecture de la condition se se fesait qu'une fois par session.....
Bonjour,

Je vous sollicite également car par rapport au doc communiqué ci-dessus par PHYDEAU, je suis bloqué en étape 8 au moment où je dois sélectionner le champ VILLE dans la requête R_Ville.
Au moment ou je valide il me met le message suivant :
AUCUNE VALEUR DONNEE POUR UN OU PLUSIEURS DES PARAMETRES REQUIS.
Messages postés
397
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
13 juin 2008
5
bonjour, ca me fait pareil que toi y a personne qui peut repondre siouplet?
Ce lien fera votre bonheur, la solution est d'une simplicité que je vous laisse découvrir :
http://office.microsoft.com/fr-fr/access/HA011730581036.aspx?pid=CL100570041036

Bon courage à tous!
ouf 3 ans pour clarifier cette question.....
pas clair pour moi, snif
je sollicite votre aide car je n'y arrive pas ! je vous explique mon problème:
j'ai une table CLIENT, une table CONTACT et une Table INTERVENTION.dont unchamp Contact est alimenté par la table CONTACT
Lorsque je sélectionne un client dans le formulaire principal, je trouve tous les contacts de ce client dans mon sous formulaire CONTACT. Pour le sous formulaire intervention, il est également lié au client sélectionné mais quand je sélectionne le contact dans la liste déroulante, je visualise tous les contacts de ma table CONTACT alors que je voudrais avoir uniquement les contacts du client en cours...
J'espère avoir été clair et vous remercie pour votre aide ! :-)