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 :

Zones de liste, sélection / désélection [AC-2002]


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Points : 42
    Points
    42
    Par défaut Zones de liste, sélection / désélection
    Bonjour à tous,

    Je connais actuellement un petit soucis et je vous avoue ne pas vraiment voir la solution !

    Dans un formulaire je dois créer 2 zones de liste.
    La 1ère (FAMILLE) la 2ème (POSITION)

    Le but pour moi serait que lorsqu'on sélectionne une famille (1ère zone de liste)
    la 2ème zone affiche TOUTES les positions existantes mais seul les positions contenues dans cette famille seraient sélectionnées par défaut !

    Et quand on veut enlever une position de cette famille on la déselectionne ou le contraire pour en ajouter une !

    Je ne vois pas vraiment si je dois obligatoirement passer par du VBA ou si une requête peut me résoudre mon problème...

    Je vous remercie d'avance de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour nextros.

    Je ne sais pas si j'ai vraiment compris le soucis, mais je pense qu'il faut passer par le VBA. Je supose qui t'as dans ton formulaire les deux listes et un bouton pour supprimer des positions:

    Dans ta requete du RowSource de la liste FALILLE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POSITION FROM maTable WHERE FAMILLE='" & Me.FAMILLE.Value & "'"
    Dans l'événement AfterUpdate de ta liste FAMILLE:
    Tu peux aussi regarder ce tuto

    ça doit remplir la liste POSITION avec les positions de la famille selectioné
    Pour enlever une POSITION, tu peux faire une requete de suppresion à fin d'effacer l'enregistrement selectioné de la table POSITION.

    Bonne continuation

  3. #3
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    Merci à toi Marc,

    Pour te donner un exemple supposons qu'il y est 4 famille (la 1, la 2,... et la 4)
    et 8 positions (la 1, la2,... et la 8)

    quand tu selectionne la famille 1 dans la premire listbox tu vois les 8 positions existantes dans la deuxième listbox mais seules celles appartenant à cette famille sont comment dire soulignées ? (enfin deja selectionnées quoi...)

    pour rajouter une position j'aimerais selectionner celle que je veux et pour en enlever une d'une famille la déselectionner.

    Je ne sais pas si c'est plus clair ?

    En tout cas merci à toi

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Je ne sais pas s'il y a un moyen plus facille, mais je crois qui c'est un début:

    Faire un tableau (monTableau) avec les positions dont cette famille les pocede (via ADO ou DAO).
    Par exemple (FAMILLE=1 donc monTableau=(1, 3, 5))

    Après tu peux faire un boucle FOR NEXT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i=0 to Me.POSITION.ListCount - 1
        If monTableau.Contains(Me.POSITION.ItenData(i)) Then Me.POSITION.Selected(i) = True
    Next i
    Pour l'enlever pareil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i=0 to Me.POSITION.ListCount - 1
        If Me.POSITION.Selected(i) = False) Then DoCmd.runSQL "DELETE FROM maTable WHERE ..."
    Next i
    C'est pas testé, mais cette une idée pour commencer...

  5. #5
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Merci pour ta réponse encore une fois Marc !

    Cependant excuse mon peu d'experience mais je ne vois pas très bien comment faire la création d'un tableau ?

    Quelqu'un pourrait-il m'aider à ce sujet ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Bonjour nextros.

    Par tableau je disais une variable Array. On va dire que la famille 1 a des positions 1, 3 et 5. Dans ce cas tu dois créer le tableau suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim arrPositions() as Integer
    arrPositions(0)=1
    arrPositions(1)=3
    arrPositions(2)=5
    Là t'auras le tableau arrPositions=(1, 3, 5) et tu pourras (en suivant le premier code) les selectioner dans ta liste. Ton soucis maintenant va être de remplir le tableau avec les bonnes positions... (tu dois avoir ces donnés dans une table, non?)

  7. #7
    Membre du Club
    Inscrit en
    Juin 2010
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 47
    Points : 42
    Points
    42
    Par défaut
    plusieurs problème se posent pour moi, ce que je n'ai pas signalé (je m'en excuse) c'est qu'il y a une table qui fait le lien entre la table FAMILLE et la table POSITION !

    Ensuite je ne vois pas comment faire le lien entre le tableau et la zone de liste (ListePosition ou ListeFamille)

    de toute façon tout se joue sur l'évenement sur clic de ListeFamille !




    Encore merci de ton aide...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Voilà, c'est bien ça
    Je n'ai pas trop du temps maintenant, mais je peux essayer de t'ecrire quelque code plus tard...

    Pour le moment, tu peux chercher un tuto sur ADO (ou DAO) à fin de recuperer les donnés (les positions) de ta table par rapport à la famille choisi.

    Bonne continuation et A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer les valeurs d'une zone de liste à sélection multiple
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 09/07/2009, 21h19
  2. Réponses: 5
    Dernier message: 18/07/2008, 09h50
  3. Réponses: 2
    Dernier message: 06/06/2008, 16h18
  4. Zone de liste à sélection multiple
    Par matjonq dans le forum IHM
    Réponses: 2
    Dernier message: 08/04/2008, 04h52
  5. Zones de liste sélection
    Par Rikou31 dans le forum Access
    Réponses: 5
    Dernier message: 15/02/2007, 00h20

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