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 :

Récupérer une valeur provenant de zones de liste


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut Récupérer une valeur provenant de zones de liste
    Bonjour,

    J'ai un formulaire avec un onglet comportant les pages : Entrée, Plat, Dessert. Dans chaque page il ya une zone de liste indépendante correspondante : lstEntree, lstPlat et lstDessert.

    Je souhaite à partir d'un menu personnalisé récupérer la valeur de la liste déroulante en cours d'utilisation pour ensuite l'utiliser pour ouvrir un formulaire basé sur ces valeurs (code intégré à un module)

    J'ai commencé ma réflexion, le plus simple c'est que dans la fonction AfterUpDate de chaque liste je puisse stocker dans une variable la valeur en cours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub lstEntree_AfterUpdate()
    Dim MonCritere As String
    MonCritere = Me.lstEntree
    End Sub
    Et que la fonction écrite dans le module récupère la valeur de la variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function EditionPlat()
            MonCritère2 = "[Plat] = " & MonCritere
    DoCmd.OpenForm "frm_Plat", acNormal, , MonCritère2, , acDialog
    End Function
    Le problème c'est que la valeur se perd car elle n'est pas stockée.
    Je sais que c'est un problème de base mais pourriez vous m'aider

    PS : Access 2002

    Merci

  2. #2
    Membre habitué Avatar de amerex
    Homme Profil pro
    Analyste Support et Développement
    Inscrit en
    Septembre 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste Support et Développement
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2007
    Messages : 246
    Points : 148
    Points
    148
    Par défaut
    Voici ce que je ferais:
    1-Créer trois textbox, à l'extérieur des onglets. (tx_entre, tx_plat, tx_dessert)
    2-Dans les propriétés des textbox, mettre Visible à Non
    3-Dans le code VBA, sur l'évènement CLICK de la premiere liste, saisir le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tx_entre.value = lstentre.value
    et le même principe pour les 2 autres.

    Il faudra alors aller récupérer les valeurs dans les textbox...

    Lorsque l'autre formulaire s'ouvre (celui avec le module), il sera possible d'aller chercher les valeurs avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![Nom du Formulaire]![tx_entre].value
    Amerex
    «La chance sourit aux audacieux»
    Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

    N'oubliez pas de noter les messages!

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonjour amerex,

    cette solution n'est pas envisageable car il s'agit d'un seul et même formulaire qui peut s'ouvrir avec les valeurs des 3 lst.

    Les listes représentent les types de plats catégorisés dans Entrée, Plat, Dessert issus d'une même table tbl_Plat.
    Le formulaire qui s'ouvre est issu de tbl_Plat

    Je pensais plus à une Public Function qui stocke ma valeur et qui me la restitue lors d'un appel : et c'est là que j'ai des difficultés à construire ce code.

    Merci

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

    Le meilleur moyen de passer une valeur à un formulaire est d'utiliser le dernier argument de la méthode DoCmd.OpenForm.

    Si tu regardes l'aide sur cette méthode d'ouverture d'un formulaire, tu verras que tu peux mettre une valeur, et celle-ci tu peux la récupérer avec la méthode OpenArgs du formulaire qui s'ouvre.

    Regardes également sur le forum avec OpenArgs, tu devrais trouver de nombreux exemples.

    Starec

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonjour Starec,

    En fait je ne souhaite pas concatener mes 3 valeurs.

    Mes zones de liste affichent des noms de plats issu d'une même table que j'ai catégorisé en différents types : Plat, entrée, dessert,etc. Mon onglet me permet de jongler entre Plat, Dessert,..etc. : la Page Entrée contient une zone de liste qui affiche l'ensemble des Entrées, la page dessert affiche l'ensemble des Desserts, etc...
    Ces zones de liste me permettent de mettre à jour un sous-formulaire identifiant les vins associés au type de plat.

    L'erreur que j'ai fait est d'avoir coller une zone de liste pour chaque Page.

    Le plus simple c'est que je fasse qu'une seule zone de liste qui s'agrémente des valeurs souhaitées par un code dès que je change de Page, ainsi je n'ai qu'une seule valeur issue d'un seul contrôle.

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/05/2012, 12h02
  2. [QtWebKit] Impossible de récupérer une valeur provenant d'un QWebView
    Par rv_63 dans le forum PyQt
    Réponses: 1
    Dernier message: 03/03/2011, 17h31
  3. Réponses: 3
    Dernier message: 31/07/2010, 21h58
  4. Réponses: 3
    Dernier message: 27/03/2009, 11h35
  5. choix d'une valeur dans un zone de liste deroulante
    Par Chikatilo dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/08/2008, 14h29

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