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 :

changer le contenu d'une liste déroulante selon choix de l'utilisateur


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut changer le contenu d'une liste déroulante selon choix de l'utilisateur
    Bonjour,
    j'aimerais pouvoir modifier le contenu d'une zone de liste déroulante si je choisi l'une des valeurs.

    Voici la disposition du champ, c'est une zone de liste déroulante, dont les valeurs ont été rentrée manuellement(ce n'est pas une requête basée sur une autre table), la possibilité de choisir plusieurs valeurs simultanément a été cochée. Ce champ reprend les différents statut possible pour les employés, un employés peut être membre du conseil d'administration, donateur et Client comptoir mais ne pourra pas être client collectivité.

    J'aimerais donc avoir quand je sélectionne une des cases se trouvant près d'un des statuts possibles, que la zone de liste se modifie et que l'on ai en possibilité que les statuts possible selon les statuts déjà choisi

    J'avais pensé utilisé un code comme celui ci, mais basé sur un select case, celui la c'etait pour faire des test et ca n'a pas l'air d'aller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Me.Statut.Column(0, 1) = -1 Then
    Me.Statut.RowSource = "Conseil Administration"
    End If
    Je voulais que si la deuxième ligne de la colonne 1 était sélectionnée, alors ne s'afficherait plus que la valeur Conseil Administration. Le problème vient que c'est probablement pas -1 qu'il faut mettre mais je ne vois pas ce qu'il faudrait et sur internet je ne trouve rien non plus.Jje n'ai pas de message d'erreur, il fait juste rien, en gros c'est comme si il ne rentrait pas dans la condition, j'ai essayé de le placer sur clic, et sur Avant modification, mais rien ne change

    J'espère avoir été clair, merci d'avance

  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
    Peux-tu faire une table et des requêtes sources ?

    Si oui, la solution est ici :

    http://access.developpez.com/faq/?page=zdl#DepZdl
    Comment faire en sorte que le contenu d'une zone de liste déroulante dépende de la valeur d'une autre liste ?

    Sinon il va falloir faire de la programmation pour changer le contenu de ta liste.

    A+

  3. #3
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    j'avais commencé avec des requêtes sources, mais le problème que j'avais avec ca, c'est que je me suis retrouvé dans mon formulaire de recherche, avec non plus la valeur stagiaire, administrateur,..., mais la valeur numérique 1,2,3,4,5,6,7,.... Ce qui n'était vraiment pas pratique au niveau d'un champ recherche puisque je recherche le mot pas son id.

    Je m'y prenais peut être mal, j'utilisais l'assistant pour faire la zone de liste, et lorsqu'il a fini, le champ devenait de type numérique. Dans les formulaire c'est bien le texte qui apparaissait mais pas dans la table, et vu que le formulaire de recherche récupére ce qu'il y a dans la table, il récupére des chiffres.


    Par contre, je viens de remarquer un autre problème. J'ai voulu voir ce que ca donnait dans mon champ recherche quand j'utilisais plusieurs valeurs dans le champs et il ne le trouve pas, peut être simplement parce qu'il n'aime pas le ; entre les deux possibilités, mais j'ai essayé de le remplacer par une virgule, un espace, ca ne va pas mieux. Dans la requête source, j'ai deux possibilité, soit je met le champ statut, et la les statuts apparaissent sur la même ligne séparé par des virgules, soit je choisi statut.value et la il met l'un après l'autre les informations même si ce n'est que d'un seul enregistrement.
    Pour moi ce serait la deuxième solution qui serait le mieux dans le formulaire de recherche, en faisant un group by, on peut avoir qu'une seule fois les informations, et surtout ca me permettrait ,si je trouve la solution au problème du pourquoi le formulaire ne trouve pas de correspondances, de trouver tout les stagiaires ou tout les donateurs, ....

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ca me parait impossible et pas du tout ergonomique.

    Si par erreur je choisi la ligne 1 et qu'elle disparait, comment je la retire ?

    Vu que vous débutez, abandonnez l'idée de champs à valeurs multiples et modélisez correctement votre base de données

  5. #5
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    je ne veux pas enlever la ligne 1 si je sélectionne la ligne 1, je veux dans la liste déroulante pouvoir enlever la ligne 4 quand la ligne 1 est cochée par exemple, si on décoche la ligne 1, tout revient, je ne veux pas bloquer la modification, je veux juste empêcher que l'utilisateur choisisse des statuts qu'il ne peut pas mettre ensemble. Je pourrais aussi bien faire un test pour bloquer certain statuts selon le statut déjà mis en place.

    La liste à valeur multiple, je ne peux pas l'oublier, je ne vois pas beaucoup d'autre possibilités pour faire l'apport de différents statut dans le champ statut, peut être en ayant un champ texte au lieu d'une liste déroulante pour le champ statut, et avoir une checkbox par statut possible et selon les cases cochées alors statut vaut autant. Mais je trouve ca moins propre et moins bien que de trouver la solution en utilisant des champs multiples.

    Edit: j'ai trouvé une solution pour mon formulaire de recherche, j'avais mal modifié l'une des lignes. Il me reste toujours à trouver le meilleur moyen d'empêcher l'utilisateur de prendre plusieurs statut simultanément selon certain critères.

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Un champ à valeur multiple dénormalise une base de données. J'ai du mal à croire que vous considériez cela comme une solution "propre"

  7. #7
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Je dois bien avouer à mon tort que je n'avais pas regardé convenablement les informations concernant cette possibilité, je ne pensais pas qu'elle pourrait engendrer notamment une si grande perte de performance. Je vais réfléchir à une meilleure solution, je trouvais ca "sympa" d'avoir toute les possibilités disposées de cette façon la, c'était assez "simple" pour l'utilisateur.

    Merci de l'information, vais tester de faire ca autrement, et modéliser mieux.

  8. #8
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Bonjour, je double post pour éviter de créer un post supplémentaire,
    j'ai pensé à cette solution, prendre un champ texte et des check box, le champ texte est lié, les check box non. Les check box représente les différents statut possible, pour limiter les choix, on utilise la propriété valide si, et un code comme si c'est pas ca ni ca ni ca.

    Si on sélectionne l'une des check box, on rempli dans le champ Statut le nom du statut qu'on a coché.

    J'ai pensé à ce code après une recherche sur internet. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Me.chkStagiaire Then
    Me.Statut.Value = Me.Statut.Value & IIf(Me.Statut.Value <> "", " ; " & "Stagiaire", "Stagiaire")
    End If
    If Me.chkBénévole Then
    Me.Statut.Value = Me.Statut.Value & IIf(Me.Statut.Value <> "", " ; " & "Bénévole", "Bénévole")
    End If
    Le iif me permet de gérer si c'est le premier statut ou pas, ainsi si c'est le premier, il ne met que le nom sinon il met un espace, le point virgule, et un espace puis le nom.

    J'ai mis ces code sur l'évenement sur clic des check box, mais le problème est que je ne vois pas comment lui dire que si la case n'est plus cochée (qu'on l'a décochée) il doit supprimer dans les valeurs du champ la valeur Stagiaire, pour lui demander de rechercher une valeur dans le champ je peux utiliser un code comme celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Statut.Value Like "*Stagiaire*"
    Mais après qu'il l'ai trouvé comme lui dire que cette valeur la il doit l'enlever avec le point virgule se trouvant sur sa gauche?

    Et j' ai un code sur l'activation du formulaire qui me permet de cocher automatiquement la case si dans le champ de cet enregistrement l'on retrouve la valeur correspondante :
    If (Me.Statut.Value Like "*Stagiaire*") Then
    [chkStagiaire] = -1
    Else
    [chkStagiaire] = 0
    End If

    Ce que je cherche donc c'est le moyen de supprime la valeur quand je décoche la case.
    C'est toujours l'idée d'un champ multi-valeurs, mais ce n'est plus une liste déroulante, c'est une zone texte qui elle est faite pour posséder une suite de caractère, ce qui est le cas ici, je ne pense pas que celà pourrait poser un problème quelconque dans la base de donnée.

    J'espère avoir été clair, merci d'avance

    Edit: je fais vraiment tout et n'importe quoi pour l'instant, j'ai trouvé la solution, simple et efficace, et moi je me casse la tête pour trouver la solution. Il suffisait de créer une fonction qu'on appelle à chaque clic sur les check box et ca fonctionne parfaitement....

    Merci de l'aide apportée.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/12/2012, 15h38
  2. Réponses: 0
    Dernier message: 25/06/2010, 14h11
  3. Réponses: 3
    Dernier message: 24/01/2007, 10h36
  4. Réponses: 1
    Dernier message: 20/04/2006, 09h17
  5. Contenu d'une liste déroulante
    Par tets88 dans le forum Access
    Réponses: 3
    Dernier message: 20/03/2006, 11h37

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