IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

[Formulaire] Création dynamique de menu déroulant


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Formulaire] Création dynamique de menu déroulant
    Bonjour,

    Je suis en train de développer un petit utilitaire de saisie pour un outil d'audit immobilier, et j'aurai besoin de créer un formulaire de saisie ergonomique, mais je me heurte à un problème :

    En fait, la saisie dans le formulaire se fait grace à un menu déroulant, mais il faudrait que suite au choix fait dans ce menu, un NOUVEAU menu déroulant s'affiche en dessous, et qu'il affiche des sous choix dépendant du choix fait dans le premier menu.

    Un petit exemple pour illustrer tout ça :

    1. Dans mon premier menu, je sélectionne Bureau parmi (bureau, couloir, salle technique)
    2. Ce choix fait apparaitre un 2e menu ou l'on peut sélectionner sol, mur, plafond, electricité. Je sélectionne électricité
    3. Ce choix fait apparaitre un 3e menu qui me permet de choisir : prise, interrupteurs, plinthes ...



    Il faut donc que la création du 2e menu soit conditionné par le choix du premier, puisque j'ai besoin non seulement de modifier son intitulé, mais aussi la table sur laquelle il se base.

    J'ai ensuite besoin de répéter l'opération plusieurs fois, cad que la sélection du 2e menu crée un 3e menu, etc ...

    J'ai déjà réussi à faire à l'aide du forum un formulaire avec des menus pré-établis, qui affichent des choix filtrés en fonction des choix précédents, mais je n'ai pas trouvé comment conditionner le choix de la table sur laquelle se base le menu en fonction du choix précédent


    Mes questions sont donc les suivantes :

    • Est-ce possible ?
    • Si oui, comment faire ?


    Merci d'avance pour votre aide !

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Points : 112
    Points
    112
    Par défaut
    Sur l'évènement 'sur changement' de ta L1 (liste 1) tu va modifier la valeur de L2.rowSource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub L1_Change()
        if (L1.value <> "") then
            L2.rowSource="Select * FROM uneTable WHERE id=" & L1.value & ";"
            L2.requery
        end if
    End Sub
    Si la liste L1 n'est pas vide alors on met a jour la liste 2 en fonction de la liste 1

    Si tu precise tes tables et tes champs je pourrais t'aider un peu plus, ainsi que les tables liées a L1, L2, et L3.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Points : 112
    Points
    112
    Par défaut
    C'est vrai je me complique un peu plus la vie -- je n'ai jamais pensé a cette astuce et j'ai pris mon habitude

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour le lien vers la FAQ, je l'avais déjà vu, mais je n'arrivais pas à le mettre en oeuvre pour mon application, parce que dans mon cas on doit choisir une table spécifique en fonction du choix, et non pas appliquer un filtre tout en sachant déjà quelle table sera utilisée ...

    Mais Cyraile, ton astuce fonctionne parfaitement, j'ai réussi à faire ce que je voulais.

    Maintenant, mais c'est un détail, j'aimerai que le menu déroulant se créer au moment ou je click sur mon choix, parce que suivant mes choix dans les menus, je pourrai avoir besoin de 3 ou 5 sous-menus ....

  6. #6
    Membre régulier
    Femme Profil pro
    Développement de produit
    Inscrit en
    Juin 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développement de produit
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2006
    Messages : 124
    Points : 106
    Points
    106
    Par défaut
    J'avais réussi à résoudre mon problème de menu déroulant dépendant du choix réalisé dans un menu déroulant précédent, grâce à la discussion suivante :

    http://www.developpez.net/forums/sho...nu+d%E9roulant

    Bon courage !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci encore une fois pour le lien, que j'avais aussi déjà trouvé, mais encore une fois je n'arrivais pas à le transposer à mon problème puisque je devais jongler entre plusieurs tables.

    Je me heurte maintenant à un nouveau probleme ... Comment recopier les valeurs sélectionnées dans une table vierge pour effectuer des enregistrements ? J'ai consulté la FAQ et je dois certainement être stupide, mais impossible de mettre la main sur l'option "recordsource" mentionnée (http://access.developpez.com/faq/?pa...s#RemplirTable)

    Dois-je changer de cerveau ? :p

  8. #8
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    je dois certainement être stupide, mais impossible de mettre la main sur l'option "recordsource" mentionnée
    Sur ton formulaire en mode création, tu as en haut à gauche un petit carré quand tu clique sur celui ci il se transforme en un petit carré noir.
    A partir de ce moment là tu as accés aux propriétés du formulaire. Sous l'onglet 'Données' tu trouve la propriété 'Source'
    Bonne continuation.
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  9. #9
    Membre régulier
    Femme Profil pro
    Développement de produit
    Inscrit en
    Juin 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développement de produit
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2006
    Messages : 124
    Points : 106
    Points
    106
    Par défaut
    Salut,

    Si j'ai bien compris ton problème, tu doit avoir 3 listes déroulantes dont chacune dépend de la précédente.
    Je vais essayé de t'expliquer comment j'ai fait, voir si ça peux te servir pour ton appli.
    Admettons que tes 3 tables sont décrites de la façon suivante :
    - t_A : A_id, A_nom
    - t_B : B_id, A_id, B_nom
    - t_C : C_id, B_id, C_nom
    Les champs A_nom, B_nom et C_nom sont ceux que tu aimerai afficher.

    Tu crèe d'abord tes trois listes déroulantes.
    Puis dans le menu propriétés, tu mets dans l'onglet Données les Source suivantes pour chaque liste :

    - 1ère liste : SELECT [t_A].[A_id], [t_A].[A_nom] FROM t_A;
    - 2ème liste : SELECT [t_B].[B_id], [t_B].[B_nom] FROM t_B WHERE ((([t_B].[A_id])=[Forms]![NomDeTonFormulaire]![A_nom]));
    - 3ème liste : SELECT [t_C].[C_id], [t_C].[C_nom] FROM t_C WHERE ((([t_C].[B_id])=[Forms]![NomDeTonFormulaire]![B_nom]));

    Après tu vas dans les propriétés de ta 1ère liste, dans l'onglet Évènements, après MAJ, tu clique sur les trois points et tu mets ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub A_nom_AfterUpdate()
    Me.B_nom.Requery
    Me.B_nom.SetFocus
    Me.B_nom.Dropdown
    End Sub
    Puis au même endroit, mais dans ta 2ème liste déroulante, tu marques le code suivant qui est similaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub B_nom_AfterUpdate()
    Me.C_nom.Requery
    Me.C_nom.SetFocus
    Me.C_nom.Dropdown
    End Sub
    Voilà, normalement ça devrait marcher ... En tout cas ça marche chez moi

    J'espère que ça te sera utile !
    Bon courage!!

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/09/2009, 13h42
  2. [Spreadsheet Excel Writer] Création d'un menu déroulant
    Par xianxian620 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/06/2008, 10h57
  3. [CB6] Création dynamique de menu
    Par Faith's Fall dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/04/2008, 23h25
  4. création d'un Menu déroulant
    Par pigeon11 dans le forum Struts 1
    Réponses: 1
    Dernier message: 20/09/2007, 09h21
  5. création d'un menu déroulant
    Par coco38 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/04/2007, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo