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 :

enlever une valeur d'une liste déroulante quand elle a deja été utilisée


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut enlever une valeur d'une liste déroulante quand elle a deja été utilisée
    Bonjour,

    Dans un sous formulaire en présentation tabulaire, j'ai pour chaque habit référencé, sa quantité en stock, et sa dotation pour un employé sélectionné.

    Si pour unj premier habit je sélectionne dans ma liste déroulante un pantalon, j'aimerais que dans la seconde liste déroulante le pantalon n'apparaisse plus.

    Comme mettre à jour cette liste déroulante à partir de la première ? sachant que la source de cette liste déroulante est une table.

    J'ai cru lire que les recordset pouvaient être une solution. Est ce vrai ? si oui merci de m'orienter vers des solutions.

    Merci d'avance pour votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Quand tu parles de seconde liste, s'agit-il de :

    Liste1, Liste2 sur un même enregistrement

    ou de

    Liste1 sur un enr
    Liste1 à nouveau sur l'enr suivant ?

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Il y a un formulaire sur le personnel (nom, prenom tel etc ... ) et un sous formulaire rattaché au personnel qui permet d'allouer un ou plusieurs équipements pour chaque employé.

    Par exemple, pour l'employé dupond, je vais choisir un pantalon et une chemise. Pour ce faire dans le sous formulaire, je vais sélectionner dans un premier temps le pantalon dans la zone de liste déroulante. Je vais ajouter l'enregistrement, et la seconde zone liste déroulante qui va apparaitre juste dessous va me permettre d'ajouter une chemise. (en mode création il s'agit de la même zone de liste déroulante)

    Mon problème est que je souhaiterais (impératif de règle de gestion) que le pantalon sélectionné dans la première zone de liste déroulante n'apparaisse plus en proposition dans la seconde zone de lister déroulante (afin de supprimer la possibilité d'allouer deux fois le même article à un employé).

    J'espère avoir répondu à votre question, Merci pour votre aide

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    J'ai tenté une solution via le sql :

    J'ai modifié le "Contenu" de l'objet zone de liste déroulante (onglet "données").

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EFFET.CODE_EFFET FROM DOTER_EFFET RIGHT JOIN EFFET ON DOTER_EFFET.CODE_EFFET=EFFET.CODE_EFFET WHERE (((EFFET.CODE_EFFET) Not In (SELECT [DOTER_EFFET]![CODE_EFFET] FROM DOTER_EFFET WHERE  [DOTER_EFFET]![MATRICULE] = Formulaires![Doter Employe]![MATRICULE] )));
    le sql est un peu hallucinant …

    Ca fonctionne SAUF que je dois fermer le formulaire et réouvrir le formulaire pour que la liste déroulante se mette à jour.



    Du coup j’ai ajouté ce bout de code , mais ici la requête qui fonctionnait dans « Contenu » ne fonctione plus… (« … Element absent dans l’expression ») Vraisemblablement un pbm de syntaxe. Je ne vois pas quoi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Formulaire_code_effet_ClickDim MatriculeEmploye   As Integer
    Dim SQL        As String
     
    MatriculeEmploye = Me.MATRICULE
     
    SQL = "SELECT EFFET.CODE_EFFET, EFFET_EN_STOCK.QTE_STOCK FROM (DOTER_EFFET RIGHT JOIN EFFET ON DOTER_EFFET.CODE_EFFET=EFFET.CODE_EFFET) LEFT JOIN EFFET_EN_STOCK ON EFFET.CODE_EFFET=EFFET_EN_STOCK.CODE_EFFET WHERE (((EFFET.CODE_EFFET) Not In (SELECT [DOTER_EFFET]![CODE_EFFET] FROM DOTER_EFFET WHERE  [DOTER_EFFET]![MATRICULE] = Formulaires![Doter Employe]![MATRICULE] ))"
     
    Formulaire_code_effet.RowSource = SQL
     
    Me.Requery
     
    End Sub
    merci d'avance pour votre aide

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EFFET.CODE_EFFET, EFFET_EN_STOCK.QTE_STOCK FROM (DOTER_EFFET RIGHT JOIN EFFET ON DOTER_EFFET.CODE_EFFET = EFFET.CODE_EFFET) LEFT JOIN EFFET_EN_STOCK ON EFFET.CODE_EFFET = EFFET_EN_STOCK.CODE_EFFET WHERE (((EFFET.CODE_EFFET) Not In (SELECT [DOTER_EFFET]![CODE_EFFET] FROM DOTER_EFFET WHERE  [DOTER_EFFET]![MATRICULE] = Formulaires![Doter Employe]![MATRICULE] )) AND ((EFFET_EN_STOCK.QTE_STOCK)>0));
    J'ai ajouté une restriction supplémentaire et ça fonctionne.



    Je laisse la demande ouverte car je serais curieux de connaitre d'autres solutions.

    merci d'avance

  6. #6
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Si ta liste est fait à partir d'une requête comme j'ai cru le comprendre, il te suffit de rafraîchir le contenu de la seconde liste quand tu mets la première a jour en insérant la ligne suivante (dans l'onglet Evénement de la prmière liste):
    NomAccessDeuxiemeListe.Requery à condition que ta requête soit dans l'onglet "Données".
    J'utilise pas mal cette fonction. A toi de me dire se elle convient pour ton problème.

    @+
    champijulie

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci pour ta réponse, je regarde dés que je peux et je fais un retour

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 3
    Dernier message: 12/11/2010, 23h14
  3. Sélectionner une valeur de la liste déroulante
    Par jacadi87 dans le forum Langage
    Réponses: 22
    Dernier message: 12/01/2010, 16h19
  4. Réponses: 7
    Dernier message: 27/05/2008, 13h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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