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 :

Comment récupérer une valeur dans une zone de liste?


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment récupérer une valeur dans une zone de liste?
    Bonjour à tous

    Mon problème, j'ai un formulaire avec quatre onglets qui ont chacun six zones de liste.
    Ce que j'aimerai faire:
    Lorsque je clic sur une ligne quelconque d'une liste, ouverture d'un formulaire correspondant à la ligne de la liste.
    Aujourd'hui j'ai une procédure sur chaque zone de liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenForm "Contact", , , "[RéfContact]=" & Me!
    [Liste23]
    Ça fonctionne, mais je voudrais simplifier en utilisant une fonction qui récupèrerait la valeur de la liste, du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function ma_fonction()
    Dim mavaleur As String
     
    mavaleur = "la je ne sais pas faire"
     
         DoCmd.OpenForm "Contact", , , " RéfContact =" & mavaleur
     
    End Function
    et utiliser cette fonction pour toutes les listes de mon formulaire.

    Merci d'avance pour votre aide et vos réponses

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour,

    Tes explications ne sont pas très claires.

    Est-ce-que que tu souhaites ouvrir un formulaire différents lors du clic sur chaque liste ou est-ce le même formulaire ?

    Ton critère de filtrage est-il également toujours le même ou est-il différent pour chaque clic effectué sur chaque liste ?

    Est ce que tes listes sont définitives ou est-ce qu'elles sont amenées à avoir d'autres informations ?

    Je penses pouvoir t'aider mais il faut que tu m'en dises plus.

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour Christophe,

    Tout d'abord merci pour ton intérêt.

    J'ajoute quelques explications:

    -J'appelle toujours le même formulaire (Contact) à partir des zones de liste (liste1, liste2,liste3...)du formulaire.
    Avec une "procédure événementielle"
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Contacts", , , "[RéfContact]=" & Me![Liste23]
    -Pour ouvrir le formulaire contact j'utilise les ID des contacts (RéfContact) que je récupère dans les lignes des listes, pour afficher le contact correspondant.
    Et comme j'ai 23 listes dans mon formulaire et afin d'éviter de définir une "procédure évènementielle" pour chaque liste, je voudrais créer un module avec une fonction unique du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function ma_fonction()
    Dim Liste As Integer
     
        Liste = Forms![Visualisation des flottes]![Liste1]
        DoCmd.OpenForm "Contacts", , , " RéfContact =" & Liste
     
    End Function
    Cette "fonction" fonctionne parfaitement, seulement je ne sais pas comment récupérer ma variable liste automatiquement.
    J'espère avoir été clair dans mes explications?

    Cordialement Jean-marc

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour Jean-Marc,

    Ce que je trouve bizarre, c'est que tu as 23 listes qui vont ouvrir le même formulaire avec le même critère. Ce qui suppose que ton formulaire est basé sur la même table !!!

    Donc dans l'absolu, je ne vois pas l'interêt d'avoir autant de listes.

    Cela dit, il faut être dans son programme pour savoir exactement ce que l'on veut en ressortir. Je suis souvent concerner par ce genre de situation.

    Eventuellement, expliques moi le contenu de tes listes, et je pourrais peut être d'aider à te simplifier la vie (par exemple, il est peut être possible d'avoir un seule liste et un menu déroulant qui permettra de définir du contenu de la liste).

    Mais dans le cas ou ton travail te convient parfaitement (et c'est là l'essentiel), sur Click de chacune de tes listes, tu ajoutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call OuvreFrmFiltre(Me.Liste1)
    Dans un module, tu met le code suivant :

    Cas ou la valeur du critère est un chaine de caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub OuvreFrmFiltre(oFilter as string)
    Docmd.OpenForm "Contacts", , , " RéfContact =""" & oFilter & """"
    End Sub
    Le faît de doubler les guillemets te permetrra de prendre en compte des textes avec un simple guillemet (') sans avoir de message d'erreur.

    Cas ou la valeur du critère est une valeur numérique (par ex. le Id de l'enregistrement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub OuvreFrmFiltre(oFilter as Long)
    Docmd.OpenForm "Contacts", , , " RéfContact =" & oFilter
    End Sub
    En espérant t'avoir aidé.

    Cordialement

    Christophe
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  3. Réponses: 2
    Dernier message: 23/04/2008, 17h49
  4. 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
  5. Réponses: 4
    Dernier message: 07/08/2006, 17h01

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