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 :

Liste déroulante avec choix diminuant après sélection des valeurs [AC-2010]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut Liste déroulante avec choix diminuant après sélection des valeurs
    Bonjour,
    je souhaite faire une liste déroulante simple à partir d'une table ListeComité qui contient 11 valeurs. Ces valeurs ne peuvent être sélectionnées qu'une seule fois.
    Exemple: membres du comité "Président", "Vice-président", "Trésorier", "Secrétaire", etc.
    Ainsi, le choix de la liste diminue au fur et à mesure des sélections dans mon formulaire "comité". De plus, lorsque le maximum d'enregistrements (n=11) est atteint et que la liste est vide, je ne peux ajouter aucun nouvel enregistrement dans mon formulaire.
    Je préfère des codes vb (pas trop compliqués cependant) au lieu de critères dans des requêtes.
    merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Bonjour,

    Il "suffit" donc d'écrire un code qui après utilisation d'un item (donc dans un événement Après mise à jour) vient réduire les choix (par exemple en utilisant Pas In("1erItemChoisi";"2eItemChoisi"; ...) dans la requête de la propriété Contenu de ta zone de liste.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut réponse
    bonjour,
    je ne saisie pas bien votre réponse. Pouvez-vous m'aider davantage, car je n'ai rien trouvé. Merci beaucoup.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Une autre solution serait l'ajout d'un champ booléen dans ta table.

    Ta requête qui alimente ta liste serait filtré sur ce champ, de manière à ne faire apparaître que les éléments non cochés (Faux). Lorsque tu choisis un élément, il suffit de faire une requête de mise à jour qui va cocher cet élément. Comme cela à la prochaine sélection dans cette liste, il n y aura que les éléments qui ne sont pas pris.

    Philippe

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Bonjour,

    @Philippe, je crois que ce n’est pas si simple, car si on rétrécit la liste au fur et à mesure, les postes précédemment affectés ne s’afficheront plus !
    Il faut que le contenu de la liste soit modulé zone de liste par zone de liste.

    Voici ce que je propose :



    Voici le code du module du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Compare Database
    Option Explicit
     
    Private Sub Form_Current()
      Call MajListe
    End Sub
    Public Sub MajListe()
      Dim i As Integer
      Dim ctl As Control
      Dim sExclus As String
      Dim sSql As String
      'Construire la liste des exclus : tous ceux qui sont affectés
      sExclus = "-0,"    'Ça ne mange pas de pain ! (aucun n'aura cette valeur)
      For i = 1 To 11
        sExclus = sExclus & Nz(Me("cboPoste" & i), -1) & ","
      Next i
      'Reconstruire le SQL des listes : exclure le contenu de sExclus sauf sa propre valeur
      For i = 1 To 11
        sSql = "SELECT tCandidatPK,  NomCandidat FROM tCandidats WHERE tCandidatPK " _
                       & "Not In (" & Replace(sExclus, "," & Nz(Me("cboPoste" & i), -1) & ",", ",-1,") & ")" _
                       & "ORDER BY NomCandidat;"
        Me("cboPoste" & i).RowSource = sSql
      Next i
    End Sub
     
    Private Sub cboPoste1_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste2_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste3_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste4_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste5_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste6_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste7_AfterUpdate()
      Call MajListe
      End Sub
    Private Sub cboPoste8_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste9_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste10_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste11_AfterUpdate()
      Call MajListe
    End Sub
    Vois si l’exemple que tu trouves ici :
    http://claudeleloup.developpez.com/t...esPaulux67.mdb
    te convient.
    Si oui, je viendrai expliquer cette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sSql = "SELECT tCandidatPK,  NomCandidat FROM tCandidats WHERE tCandidatPK " _
                       & "Not In (" & Replace(sExclus, "," & Nz(Me("cboPoste" & i), -1) & ",", ",-1,") & ")" _
                       & "ORDER BY NomCandidat;"
    … qui n’est pas piquée des vers !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut
    bonjour!
    C'est bien gentil à vous de m'aider à trouver une solution. En fait, la dernière réponse de M. LeLoup est intéressante, sauf que mon formulaire unique inscrit les membres du comité et pour déterminer la fonction qu'ils occupent dans le comité, j'ai une liste déroulante des titres des fonctions. C'est celle-ci que je souhaite voir diminuer les choix au fur et à mesure de leur sélection. Pensez-vous pouvoir m'aider dans ce sens?
    Merci beaucoup

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Salut Claude, je n'avais pas vu le sujet de cette manière, effectivement, ta solution m'offre un autre point de vue.

    Cependant :

    j'ai une liste déroulante des titres des fonctions. C'est celle-ci que je souhaite voir diminuer les choix au fur et à mesure de leur sélection. Pensez-vous pouvoir m'aider dans ce sens?
    Une copie d'écran du formulaire devrait aider.

    Philippe

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    ... sauf que mon formulaire unique inscrit les membres du comité et pour déterminer la fonction qu'ils occupent dans le comité, j'ai une liste déroulante des titres des fonctions. C'est celle-ci que je souhaite voir diminuer les choix au fur et à mesure de leur sélection.
    A priori, cela ne change rien à l'affaire !

    Peux-tu poster ta db dans une version compatible Access2000 ou, au moins comme le suggère Philippe, une capture d'écran de ton formulaire.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,



    Voici le code du module du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Compare Database
    Option Explicit
     
    Private Sub Form_Current()
      Call MajListe
    End Sub
    Public Sub MajListe()
      Dim i As Integer
      Dim ctl As Control
      Dim sExclus As String
      Dim sSql As String
      'Construire la liste des exclus : tous ceux qui sont affectés
      sExclus = "-0,"    'Ça ne mange pas de pain ! (aucun n'aura cette valeur)
      For i = 1 To 11
        sExclus = sExclus & Nz(Me("cboPoste" & i), -1) & ","
      Next i
      'Reconstruire le SQL des listes : exclure le contenu de sExclus sauf sa propre valeur
      For i = 1 To 11
        sSql = "SELECT tCandidatPK,  NomCandidat FROM tCandidats WHERE tCandidatPK " _
                       & "Not In (" & Replace(sExclus, "," & Nz(Me("cboPoste" & i), -1) & ",", ",-1,") & ")" _
                       & "ORDER BY NomCandidat;"
        Me("cboPoste" & i).RowSource = sSql
      Next i
    End Sub
     
    Private Sub cboPoste1_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste2_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste3_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste4_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste5_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste6_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste7_AfterUpdate()
      Call MajListe
      End Sub
    Private Sub cboPoste8_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste9_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste10_AfterUpdate()
      Call MajListe
    End Sub
    Private Sub cboPoste11_AfterUpdate()
      Call MajListe
    End Sub
    Vois si l’exemple que tu trouves ici :
    http://claudeleloup.developpez.com/t...esPaulux67.mdb
    te convient.
    Si oui, je viendrai expliquer cette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sSql = "SELECT tCandidatPK,  NomCandidat FROM tCandidats WHERE tCandidatPK " _
                       & "Not In (" & Replace(sExclus, "," & Nz(Me("cboPoste" & i), -1) & ",", ",-1,") & ")" _
                       & "ORDER BY NomCandidat;"
    … qui n’est pas piquée des vers !
    bonjour,
    je vais tenter d'utiliser cette solution. Après analyse, elle semble être appropriée si j'utilise un sous-formulaire en mode continu pour mon comité. Je vous reviens et je mettrai sans doute le problème à "Résolu". Je vous remercie infiniment. Vous ne savez pas à quel point ce site web et vos solutions sont une ressource inestimable!

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Vois si l’exemple te convient.
    Si oui, je viendrai expliquer cette partie du code

    Voir l'explication de la méthode à cette adresse : http://claudeleloup.developpez.com/t.../plic-ploc/#LV

    Commentaires bienvenus !

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    j'ai tenté de prendre la solution que vous me proposez, mais je dois procéder à l'envers. Vous pourrez voir d'après les images (5) ci-jointes des captures d'écran de mes tables (3) et du sous-formulaire (2):

    Première table: ListeFonction, qui énumère les fonctions des dirigeants du Comité (pour l'exemple je n'ai mis que 4 fonctions).
    Deux images: format création et données

    Nom : ListeFonction-Creation.jpg
Affichages : 1871
Taille : 41,3 Ko
    Nom : ListeFonction-Donnees.jpg
Affichages : 1857
Taille : 34,0 Ko

    Deuxième table: tblDirigeant qui contient les membres du comité et qui possède un champ dirFonction (numérique à laquelle je désire informer grâce à une liste déroulante dont la source est la table ListeFonction en lien avec le champ clé primaire id_fcoCode)
    Une image: format création

    Nom : tblDirigeant-formatCreation.jpg
Affichages : 2015
Taille : 126,6 Ko

    Sous-formulaire: C'est dans ce sous-formulaire SfrmDirigeantComite, inclus (père-fils) dans le formulaire Comité que je vais inscrire les dirigeants. Dans ce sous-formulaire, il y aura donc la liste déroulante basée sur la table ListeFonction. C'est à cet endroit que je désire voir diminuer les choix dans ma liste au-fur et à mesure de leur sélection et dont le code devra être inséré.
    Deux images: formats création et données

    Nom : SfrmDirigeantComite-Creation.jpg
Affichages : 1848
Taille : 52,0 Ko
    Nom : SfrmDirigeantComite-Donnees.jpg
Affichages : 1859
Taille : 40,5 Ko

    J'espère que vous comprendrez mon besoin. Je vous remercie beaucoup.

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Pourquoi veux-tu que l'attribution se passe à ce niveau-là ?
    Ne pourrais-tu pas :
    1° constituer l’équipe du comité (comme dans mon exemple)
    2° ajouter un bouton dans le formulaire exemple pour déclencher in fine le report dans tblDirigeant du code fonction qui a été attribué à chacun
    3° dans ton père/fils Comité/Membres afficher la fonction dans une zone de texte et non dans une zone de liste ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 67
    Points : 28
    Points
    28
    Par défaut
    bonjour, oui c'est une idée. Mais c'est parce que j'ai les coordonnées individuels de ces dirigeants. Je vais jongler tout cela en considérant votre solution. Merci beaucoup. Je pense que je vais résoudre cette requête avec votre solution. ça va marcher. C'est une bonne piste. Merci

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 126
    Points : 105
    Points
    105
    Par défaut
    Salut à tous, Dans mon cas, j'utilise un formulaire feuille de donnée. Comment y procéder ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/11/2014, 16h20
  2. Listes déroulantes avec choix groupés de cases à cocher
    Par dav2k dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/07/2010, 23h54
  3. Réponses: 11
    Dernier message: 19/02/2010, 16h00
  4. Double liste déroulante avec choix d'onglet
    Par fugy33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2007, 10h45

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