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

Access Discussion :

Formulaires liés - Passage d'un ctrl


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 91
    Points : 92
    Points
    92
    Par défaut Formulaires liés - Passage d'un ctrl
    Bonjour,
    j'ai 2 formulaires (pour faire simple Form1 et Form2).
    A partir du premier formulaire (Form1) j'ouvre le second (Form2) à l'aide d'un bouton.
    je fais différents choix dans le second formulaire à partir de listes déroulantes.
    L'ensemble de ces choix correspond à une valeur qui doit être affectée dans un contrôle "texte" de mon premier formulaire en cliquant sur un bouton présent dans le 2ème Formulaire.

    Petite précision le formulaire (Form2) doit pouvoir être appelé à partir d'autres formulaires que (Form1) et retourner la valeur calculée dans un des contrôles du formulaire qui à servi à son lancement.

    J'ai essayé de passer le nom du contrôle de form1 qui attend une valeur en retour de form2 avec la propiété OpenArgs de la méthode OpenForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Form2", , , , , , "Forms!form1!result"
    je récupère cette valeur dans Form2 avec la propriété sur l'évènement chargement du formulaire par contre je n'arrive pas à réaffecter la valeur du control result de form2 à Forms!form1!result.

    Merci pour vos réponses ou orientation vers un tuto (pas trouvé pour le moment)

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    attention dans ton code tu passes une chaîne "Forms!form1!result" et non la valeur du controle result dans le formulaire form1 ...

    pour que VBA évalue le contrôle il faut ôter les ""

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 91
    Points : 92
    Points
    92
    Par défaut
    Le passage de la chaine est voulu, mais c'est peut être ma démarche qui est fausse.
    Ce que je souhaite faire, dans le Form2 c'est à la fois récupérer la valeur du control et là tu as raison il ne faut pas mettre les "", mais je souhaite également savoir quel est le nom du control de Form1 qui à transmit la valeur à Form2 afin de pouvoir lui retourner une autre valeur.
    A partir de Form2 je voudrais pouvoir écrire ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim vCtrl as control
    vCtrl = Me.OpenArgs
    vCtrl.value = Forms!Form2!result.value
    Ce que je n'arrive pas à faire c'est passer de Form1 à Form2 le nom du control de Form1 qui doit recevoir la nouvelle valeur de Form2.
    Je pense que c'est ma déclaration du control qui est erronée.

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Essaie avec Eval() fonction qui permet d'évaluer une chaîne ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 91
    Points : 92
    Points
    92
    Par défaut
    Merci pour ta réponse mais eval() ne m'a pas plus aidé.
    Je pris une autre piste qui semble fonctionner.
    Voici le code du premier formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub btn_Service_Click()
        Dim stDocName As String
        stDocName = "frm_Service"
     
            DoCmd.OpenForm stDocName
           Set Form_frm_Service.ctlTarget = Me.Service
    End Sub
    Voici le code du 2ème formulaire qui est ouvert a partir du 1er
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim mprpctlTarget As Control
     
    Property Set ctlTarget(strCtl As Control)
        Set mprpctlTarget = strCtl
    End Property
     
    Private Sub Commande61_Click()
    MsgBox mprpctlTarget.Name & " " & mprpctlTarget.Value
    End Sub
    La msgbox me donne bien le nom et la valeur du contrôle que j'ai passé en argument. A partir de là je pense pouvoir sans problème affecter la valeur du contrôle de mon 2ème formulaire à mon 1er.
    Merci à ceux qui ont pris le temps de me répondre.
    Je ne suis pas l'auteur de cette solution je me suis largement inspiré de cet exemple : http://sinarf.developpez.com/access/...chooser/<br />
    Merci à son auteur.

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

Discussions similaires

  1. Ouverture / Fermeture de formulaires liés
    Par steph_p dans le forum IHM
    Réponses: 11
    Dernier message: 11/09/2008, 13h28
  2. Deux sous-formulaire liés par une relation 1 à 1
    Par Elnino38 dans le forum VBA Access
    Réponses: 7
    Dernier message: 10/04/2008, 17h26
  3. Formulaires liés + Deplacement de fiche
    Par Chlo dans le forum IHM
    Réponses: 8
    Dernier message: 21/02/2007, 20h27
  4. Réponses: 4
    Dernier message: 09/01/2007, 14h28
  5. Formulaires liés à une table
    Par SlySylvain dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2006, 14h36

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