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 :

[AC-2010] Remplir contrôle d'un formulaire à partir d'un autre formulaire


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut [AC-2010] Remplir contrôle d'un formulaire à partir d'un autre formulaire
    Bonjour

    Je fais appel à vous car même après recherche dans le forum ou autres tutos bien utiles sur ce site, je n'ai pas trouvé comment remplir un contrôle d'un onglet d'un autre formulaire.

    Je m'explique, j'ai un formulaire : FORM1 à partir duquel j'ouvre un formulaire FORM2. Dans FORM2 il y a un contrôle onglet CTL0 qui a 2 pages (PAGE1, PAGE2). Dans la PAGE1 j'ai une zone de texte L_1 que je souhaiterais remplir. Et c'est là où ça coince...

    Et le code suivant, ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Cmd_Click()
    DoCmd.OpenForm "FORM1"
    NomEtiq1 = "Forms![FORM1]![CTL0]![L1]"
    Controls(NomEtiq1).Value = "test"
    End Sub
    Merci pour votre aide
    Secco

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Cela :
    FORM1 à partir duquel j'ouvre un formulaire FORM2
    est différent de
    Et Tu fait référence à L_1 alors que dans le code on a L1 ?

    Peux-tu te relire stp et ré-expliquer exactement ce que tu veux faire car ça devrait être assez simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private sub Bouton_Click
    'On ouvre Form2 à partir de Form1 :
    Docmd.Openform "Form2"
    'On attribue la valeur "Test" au contrôle L1 de Form2 par :
    Forms!Form2!L1 = "Test"
    end sub
    Bonne continuation.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Bonjour madefemere

    En effet, j'ai voulu modifier mon code pour plus de visibilité et éviter de rentrer dans des détails inutiles, mais au final... ça ne veut plus rien dire !

    Donc, voici la version modifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Private Sub Cmd_Click()
    DoCmd.OpenForm "FORM2"
    NomEtiq1 = "Forms![FORM2]![CTL0]![L_1]"
    Controls(NomEtiq1).Value = "test"
    End Sub
    Par ailleurs, j'ai également testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomEtiq1 = "Forms![FORM2]![CTL0]![PAGE1]![L_1]"
    qui ne fonctionne pas.

    Le message d'erreur est le suivant à chaque fois :
    "Erreur d'exécution '2465': Microsoft Access ne trouve pas le champ ""Forms![FORM2]![CTL0]![PAGE1]![L_1]"" auquel il est fait référence dans votre expression."

    Merci d'avance pour votre aide
    Secco

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Y a-t-il une raison particulière pour faire l'assignation de valeur par tes lignes 5 et 6 au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!Form2!L_1 = "Test"
    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Oui, parce qu'en réalité, je fais une boucle du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 2 To NbT
       'Tout un blabla ici pour remplir la variable X
       NomEtiq1 = "Forms![FORM2]![CTL0]![L_" & i & "]"
       Controls(NomEtiq1).Value = X
    Next

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Je verrai cela de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim Ctl as control
    For i = 2 To NbT
       'Tout un blabla ici pour remplir la variable X
        set Ctl=Forms![FORM2].controls("L_" & i)
        Ctl.value = X
    Next i

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2009, 16h54
  2. Maximiser un formulaire à partir d'un autre formulaire
    Par samson_02 dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/04/2009, 11h03
  3. Réponses: 7
    Dernier message: 19/01/2009, 23h36
  4. Réponses: 3
    Dernier message: 30/09/2008, 15h49
  5. Réponses: 2
    Dernier message: 09/05/2007, 18h43

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