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

VBA Access Discussion :

Liste déroulante et valeur [AC-2010]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Liste déroulante et valeur
    Bonjour.

    J'ai dans un formulaire une série de contrôle dont une liste déroulante (mod_Type) dépendante d'une requête (rq_Type) qui récupère les valeurs possibles d'une table (tbl_Type).
    Une fois complété le formulaire, j'enregistre le résultat dans une table (tbl_Main) avec, entre autres, la valeur choisie de mod_Type gardée dans un champ de type text ("Estado").

    Jusque là tout va bien

    Maintenant j'utilise le même formulaire pour éditer mes registres de tbl_Main et je n'arrive pas à visualiser dans la liste déroulante (mod_Type) la valeur récupérée du champ "Estado" (récupérée par requête).
    J'essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.mod_Type.Value = rs2.Fields("Estado").Value
    mais çà ne marche pas..
    Nom : Capture.JPG
Affichages : 1738
Taille : 18,1 Ko

    Merci de votre aide!!

  2. #2
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bonjour.

    Je rajoute un contrôle pour vérifier la valeur récupérée

    Me.modEstado.Value = rs2.Fields("Estado").Value
    Me.Texte191 = Me.modEstado.Value
    Nom : Capture1.JPG
Affichages : 1609
Taille : 12,1 Ko

    Effectivement le problème ne se trouve pas dans la récupération de la valeur mais bien dans l'affichage.
    Des pistes?

    Merci par avance

  3. #3
    Membre actif Avatar de EBRAG
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Avril 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 125
    Points : 236
    Points
    236
    Par défaut Liste déroulante
    Bonjour,

    Si la liste déroulante a pour donnée source une autre information que le champ de la table, il y a peu de chance pour qu'elle affiche cette donnée.

    Il faut effectivement passer par un second contrôle comme décrit dans le second message...

    La liste déroulante n'intervenant que pour modifier le champ cible... (voir le code VBA associé à cette liste déroulante)

    Bon courage...
    Joël GARBE
    Fouillez bien, vous trouverez (ou pas !)

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci EBRAG pour ta réponse.

    J'avoue ne toujours pas comprendre pourquoi ne pas pourvoir afficher une valeur qui est chargée dans la liste...
    Effectivement, la liste déroulante (modEstado) est bien alimentée ou chargée par une requête.
    Mais j'essaye de lui attribuer une valeur déterminée par une autre requête et j'y arrive : "Me.modEstado.Value = rs2.Fields("Estado").Value"
    Si je consulte Me.modEstado.value je retrouve bien la valeur passée. Mais pourquoi ne veut-elle pas s'afficher...
    Nom : Capture.JPG
Affichages : 1679
Taille : 14,6 Ko

    J'aimerai juste comprendre le fond du sujet...
    Encore merci.

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Bon: ce n'est pas très joli mais si ça peut servir à d'autres... Solution pour contourner le problème..

    Je superpose graphiquement une textbox (txtEstado) et une liste déroulante (modEstado).

    Au chargement du formulaire, j'ai
    1) la requête pour charger la liste
    2) je rends visible la textbox et invisible la liste

    Sur évènement 'click' de la textbox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Me.modEstado.Visible = True
    Me.modEstado.SetFocus
    Me.txtEstado.Visible = False
    Me.modEstado.Dropdown
    Sur l'évènement 'change' de la liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Me.txtEstado.Visible = True
    Me.txtEstado.SetFocus
    Me.txtEstado = Me.modEstado.Column(1) 'Colonne à adapter en fonction de la source
    Me.modEstado.Visible = False
    J'aimerai quand même savoir pourquoi une liste ne peut pas afficher sa valeur!!

    Joyeuses fêtes de fin d'année à toutes et à tous.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 636
    Points : 14 607
    Points
    14 607
    Par défaut
    J'aimerai quand même savoir pourquoi une liste ne peut pas afficher sa valeur!!
    bonsoir,
    si j'ai bien compris ton souci, je pense que c'est parce qu'il s'agit du zone de liste indépendante qui n'a pas de source contrôle sinon une valeur s'afficherait. Sans cela, rien ne s'affiche puisque Source contrôle est Nul.
    Pour afficher une valeur dans une zone de liste indépendante tu peux, soit mettre la première valeur de ta requête avec =Mindom("mod_Type";"rq_Type") dans la propriété valeur par défaut de ta zone de liste, soit le faire par code à l'ouverture du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Me.modEstado =  Me.modEstado.ItemData(0)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci de ton aide.
    Je simplifie pour une meilleure compréhension.
    La liste déroulante a bien une source: une requête qui récupère les valeurs A, B, C et D.
    Sur l'ouverture du formulaire je construit une requête contre une autre table qui récupère la totalité d'un registre avec les valeurs PEPE, VOITURE, A
    Je veux afficher dans la listbox cette valeur récupérée (A). L'usager pourra alors modifier cette valeur avec la liste déroulante.
    Hors:
    Me.modEstado.Value = "A" ne fonctionne pas.
    Me.modEstado.DefaultValue = "A" ne fonctionne pas.
    Et "A" est bien membre de la liste..

    Encore merci.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 636
    Points : 14 607
    Points
    14 607
    Par défaut
    Bonjour,
    peux-tu me dire si ton formulaire est indépendant (c'est à dire que la propriété Source est vide) car cela voudrait dire que tous tes contrôles ou presque (y compris ta zone de liste déroulante ou listbox) sont indépendants et que par conséquent la propriété Source contrôle de tes contrôles sont vides. Le Contenu de ta zone de liste, par contre, elle contient une requête.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Effectivement la Source du contrôle est vide et son Contenu est bien le résultat d'une Requête.
    Mais pourquoi dans ce cas ne pas pouvoir afficher une Valeur donnée (qui fait partie de la liste des Items chargés) alors qu'on arrive bien à attribuer au contrôle une Valeur donnée.
    Conception? Je dois avoir un vrai soucis de compréhension du fonctionnement des textbox !!!
    Encore merci!

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 636
    Points : 14 607
    Points
    14 607
    Par défaut
    pour charger ta listbox Je t'ai donné la solution dans le post #6.
    Pour ce qui est du chargement d'une valeur dans un textbox indépendant, il est possible de charger une valeur dans la Source Contrôle (en mettant ="mavaleur" par exemple) mais elle ne sera pas modifiable. Donc pour une saisie de nouvelles données il faut une table, même temporaire.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Je récupère donc par une autre requête le nº de l'enregistrement et je l'assigne à modEstado.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSQL2 = "SELECT tblESTADO.ID, tblESTADO.Nombre FROM tblESTADO WHERE tblESTADO.Nombre = '" & rs1.Fields("Estado").Value & "';"
    Set rs2 = db1.OpenRecordset(strSQL2)
    Me.modEstado = Me.modEstado.ItemData(rs2.Fields("ID") - 1)
    Cela fonctionne.

    Merci de ton aide et joyeuses fêtes!

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 636
    Points : 14 607
    Points
    14 607
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.modEstado = Me.modEstado.ItemData(rs2.Fields("ID") - 1)
    attention quand même à ne pas récupérer une valeur inappropriée car l'indice d'ItemData ne correspond pas à une valeur mais à une position dans un tableau. Donc à mon avis ce code est incorrect.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Candidat au Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Oui.
    Mais mon ID est toujours numérique et auto incrémenté.
    Puisque le littéral recherché par la requête provient lui aussi de la même table en origine, je suis sûr à 100% de récupérer la même position (avec le -1 puisque la table commence à 1 et la position e la listbox à 0).
    Encore merci.

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 636
    Points : 14 607
    Points
    14 607
    Par défaut
    Je t'en prie.
    Passe une bonne fête de fin d'année.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. rafraichir 3 listes déroulantes suivant valeur radio button
    Par arnogef dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 20/06/2007, 23h48
  2. [Javascript] Liste déroulante avec valeurs non cliquables.
    Par SONY30 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 23/02/2007, 10h36
  3. liste déroulante et valeur selectionnée
    Par lepovre dans le forum Langage
    Réponses: 2
    Dernier message: 17/11/2006, 14h20
  4. Réponses: 6
    Dernier message: 24/08/2006, 14h56
  5. Liste déroulante sans valeur par défaut ?
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/02/2005, 16h59

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