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.

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
Jusque là, je n’ai pas de problème, le contrôle s’affiche bien.

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
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
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.

Il y a certainement, je n’en doute une solution simple, mais malheureusement je ne la connais pas.

Merci pour vos conseils
Alain