Bonjour,
Je me tourne à nouveau vers vous pour solutionner un petit problème qui je n’en doute pas doit être extrêmement facile à régler, mais je ne trouve pas seul la solution, ni dans les forums.
J’ai un formulaire qui possède 3 onglets. Le premier onglet est basé sur une table (Table1). Le deuxième onglet est basé sur une autre table (Table2). Le troisième onglet, et c’est là que ça coince, contient un sous-formulaire basé sur une table différente (Table3).
Ce formulaire a pour source une requête simple des tables Table1 et Table2 liés.
Dans le premier onglet, il y a un contrôle TextBox1, qui permet de saisir une référence.
Dans la Table1, le champ correspondant à ce contrôle est unique et non nul.
Je souhaite que la valeur de ce contrôle, s’affiche sur les contrôles correspondants dans les autres onglets.
Dans le second onglet, il y a donc un contrôle correspondant TextBox2, qui doit afficher automatiquement la valeur saisie dans le contrôle du premier onglet.
Dans la Table2, le champ correspondant à ce contrôle est également unique et non nul.
Jusque là, je n’ai pas de problème, le contrôle s’affiche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub NomTextBox1_AfterUpdate() If IsNull(Forms![Formulaireprincipal].[NomTextBox1]) Or Forms![Formulaireprincipal].[NomTextBox1] = "" Then MsgBox ("Vous devez saisir un numéro de référence") Else Me![NomTextBox2] = Me![NomTextBox1] End If End Sub
Par contre mon gros souci est que je n’arrive pas à mettre à jour le contrôle TextBox3 du troisième onglet, qui est dans le sous-formulaire.
Dans la Table3, le champ correspondant à ce contrôle est indexé avec doublons et également non nul.
J’ai essayé beaucoup de solutions. La seule qui fonctionne " à peu près " est la suivante :
Dans le sous-formulaire, à réception du focus sur le contrôle
Quelle que soit l’évènement sur lequel je place ce bout de code, soit il ne se passe rien, soit je reçois le message d’erreur suivant‘ Vous devez entrer une valeur dans le champ « Table3.champ »’ et seulement après il met à jour le Textbox3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub NomTextBox3_GotFocus() If IsNull(Forms![Formulaireprincipal].[NomTextBox1]) Or Forms![Formulaireprincipal].[NomTextBox1] = "" Then MsgBox ("Vous devez saisir un numéro de référence") Else Me![ NomTextBox3] = Forms![Formulaireprincipal].[NomTextBox1] End If End Sub
Il y a certainement, je n’en doute une solution simple, mais malheureusement je ne la connais pas.
Merci pour vos conseils
Alain
Partager