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

Access Discussion :

Listes Dépendantes Non Hierarchisées.


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Listes Dépendantes Non Hierarchisées.
    Bonjour tout le monde.

    Je suis un petit nouveau ici. (Mais je vais éviter de poser la fameuse question que l'on pose 100 000 fois, celle des menus déroulants imbriqués. )

    Perso, je cherche à créer un formulaire basé sur n menus déroulants dépendants, mais NON HIERARCHISES.

    Pour faire simple, je vais utiliser la métaphore du jeu d'échec :

    J'ai des pions (pion_1, pion_2, pion_3... pion_n)
    J'ai des échiquiers (échiquier_1, échiquier_2, ..., échiquier_n)

    Contraintes :
    1. On peut placer un ou plusieurs pions sur un échiquier.
    2. Un pion se trouve obligatoirement soit à l'extérieur d'un échiquier, soit sur un seul et unique échiquier.
    3. Un pion peut changer d'échiquier.

    Afin d'avoir une vue globale sur tous les échiquiers, j'envisage d'afficher un formulaire en mode feuille de données, qui liste mes échiquiers ligne par ligne. Et à chaque colonne, un menu déroulant me permet de choisir tel ou tel pion.

    Echiquier_1 : Pion_2, Pion_5
    Echiquier_2 : (Aucun pion)
    Echiquier_3 : Pion_1
    Echiquier_4 : Pion_3, Pion_4, Pion_18

    Etc...

    Cette solution me permet de dispatcher mes pions comme je le souhaite, en actionnant les menus déroulants, colonne après colonne, et ligne après ligne. Sauf que... Je ne suis pas très satisfait de mon idée.

    Car je vois 2 problèmes :

    Problème n°1 : N menus déroulants sont nécessaires pour chaque ligne. (C'est un peu lourd)
    Problème n°2 : Les listes déroulantes doivent être dynamiques, puisqu'un pion ne peut pas se retrouver sur plusieurs échiquier à la fois... Et là, ça devient compliqué, Help !

    A moins que quelqu'un aurait une meilleure idée ? Re-Help !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    À vrai dire sauf si j'ai raté quelque chose tu as besoin de 8 x 2 listes déroulantes puisqu'un échiquier ne comporte que 8 cases. Et c'est toujours les "mêmes" listes. Seul le nom des contrôles va changer.

    Pourquoi x 2 car si tu utilises des listes dépendantes, les éléments qui ne sont pas dans la liste disparaissent. Il te faut donc une liste pour la sélection et une liste pour l'affichage.

    Une fois que tu as crée les 2 premières, il suffit de les recopier 7 fois et de donner aux copies des noms significatifs du genre lstChoixPion2, lstAffPion2Pour alimenter ta liste de sélection il suffit de faire une requête qui mets en relation la table des pions et la table des Échiquiers/Pions. Si un poin est déjà dans Échiquiers/Pions il ne faut pas le sélectionner.

    Quand tu arrives sur la liste (évènement Sur Réception du focus) tu peux utiliser du code qui ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function MAJListeCHoix(prmListe as combobox)
       dim db as doa.database:set db=currentdb
       prmListe.recordsource=db.querydef("reqChoixPion")
       db.close:set db=nothing
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function RAZListeCHoix(prmListe as combobox)
       prmListe.recordsource=Null 'Évite l'effet guirlandes de noël où les données apparaissent et disparaissent en fonction des changements dans la liste 
    end sub
    Dans l'évènement sur réception du focus mettre la valeur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAJListeCHoix([lstChoixPionX])
    Où X vaut 1 à 8.

    Dans l'évènement sur perte du focus mettre la valeur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RAZListeCHoix([lstChoixPionX])
    Où X vaut 1 à 8.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Listes Déroulantes Non Hierarchisées
    C'est sympa de m'avoir répondu aussi vite Marot. J'ai commencé a faire ce que tu m'as dit.
    La première liste de sélection LstChoixPion, pas de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT [Pions].N°, [Pions].Nom
    FROM Pions LEFT JOIN [Echiquier_Pions] ON [Pions].N° = [Echiquier_Pions].[Ref pion]
    WHERE ((([Echiquier_Pions].[Ref echiquier]) Is Null));
    Par contre, j'ai un peu de mal pour la deuxième liste de sélection LstAffPion... Que doit afficher cette liste ?


    Du coup, pour qu'on puisse mieux se comprendre, j'abandonne ma métaphore hasardeuse sur les échecs, mais je garde le concept qu'il y a derrière, en prenant un autre exemple plus parlant :

    Imaginons une commode de 10 x 1000 tiroirs. (10 par ligne, et 1000 par colonne).
    Imaginons une trousse de crayons de couleurs. (1000 couleurs différentes, un crayon par couleur).

    Ce que je souhaite, c'est :
    - pouvoir ranger chaque crayon dans un tiroir de mon choix.
    - pouvoir déplacer autant de crayon que je veux, d'un tiroir à l'autre.
    - remettre un ou plusieurs crayon dans la trousse.
    - savoir du premier coup d'oeil si un tiroir est vide ou rempli.

    Ma commode serait un formulaire en mode liste de données.
    Mes tiroirs seraient des menus déroulants.
    Les crayons seraient les items de ces menus déroulants.

    Voili-voilou. Je ne sais pas si c'est plus clair ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour LstAffPion se contente d'afficher les données existantes. Elle ressemble à select * from tablPion. C'est une astuce d'interface.

    Access n'accepte pas plus de 255 champs (colonnes) donc il faudrait faire 1000 lignes et 10 colonnes. Sinon il va falloir "découper" l'écran en tranche de 255 et synchroniser l'affichage ce qui n'est pas évident.

    pouvoir déplacer autant de crayon que je veux, d'un tiroir à l'autre.
    J'avais compris que tu avais au maximum un crayon par tiroir.

    Est-ce que chaque crayon est unique ou tu peux avoir plusieurs fois le même type de crayon. (Ex : 3 crayons rouge dans le tiroir A1").

    Je ne sais pas quel est ton besoin exact et à quel point la présentation en tableau est importante mais Access est plus conçu pour faire des choses comme :

    1. Choisir un produit
    2. Saisir une quantité.
    3. Répéter


    que pour présenter des tableaux.

    Si on l'applique à ton exemple cela donnerai sans doute

    1. Choisir un crayon
    2. Choisir un tiroir
    3. Saisir une quantité.
    4. Répéter


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    J'ai oublié de préciser que les 2 listes (lstChoixPion et lstAffPion) sont liées au même champ dans la table [ClefPion].

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Access n'accepte pas plus de 255 champs (colonnes) donc il faudrait faire 1000 lignes et 10 colonnes. Sinon il va falloir "découper" l'écran en tranche de 255 et synchroniser l'affichage ce qui n'est pas évident.
    Autant pour moi : La table commode aura 1000 enregistrements au maximum, et une dizaine de champs.
    En ce qui concerne l'affichage écran, pas de soucis. En amont, je mets en place une requête selection basée sur COMMODE afin de réduire le nombre de ligne à afficher.

    Citation Envoyé par marot_r Voir le message
    J'avais compris que tu avais au maximum un crayon par tiroir.

    Est-ce que chaque crayon est unique ou tu peux avoir plusieurs fois le même type de crayon. (Ex : 3 crayons rouge dans le tiroir A1").
    Le crayon est unique. On ne peut pas avoir 2 crayons ayant strictement la même couleur.


Discussions similaires

  1. Liste déroulante non modifiable
    Par Deubeul_iou_Bouch dans le forum Access
    Réponses: 4
    Dernier message: 17/05/2006, 01h56
  2. Zone de liste dépendantes
    Par billyboy dans le forum Access
    Réponses: 1
    Dernier message: 14/04/2006, 01h57
  3. Zone de liste dépendant d'une autre liste
    Par JimmyB dans le forum Access
    Réponses: 7
    Dernier message: 31/03/2006, 22h36
  4. Probléme avec zone de liste dépendante!
    Par sunflower dans le forum IHM
    Réponses: 5
    Dernier message: 26/12/2005, 17h34
  5. Actualisation d'une liste "dépendante".
    Par Trilby dans le forum ASP
    Réponses: 6
    Dernier message: 19/11/2003, 18h39

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