Salut,
| "William Kameron"
|| Dans un contrôle Onglet je suis parvenu à un résultat apréciable.
|| En programmant l'évenement "OnChange" de l'onglet je peux raffraîchir la
|| page juste avant qu'elle ne s'affiche et retrouver mon enregistrment que j'ai
|| quitté de l'autre côté.
|| C'est déjà pas mal. C'est embêtant. Je voulais les deux en vis-à-vis. comme
|| un "SCROLL"
| [...]
|
| Je dois m'absenter... ce sera pour tantôt...
Le "tantôt" s'est éternisé, désolé...
Bon, pour tes deux sous-formulaire, tu peux mettre dans l'événement
"Sur activation" (form_current) ceci :
'---- sous-form Classes_f2
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F2
With Me.Parent!Ctrl_Classes_F2.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
'---- sous-form Classes_f1
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F1
With Ctrl.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
---------------------------------------
NomPK :
représente le nom de la clé primaire, identique pour les 2 sous-form
Ctrl_Classes_F1 :
représente le control sous-formulaire qui contient le formulaire Classes_F1
(qui n'a pas *forcément* le même nom que le form qu'il contient)
idem pour Ctrl_Classes_F2
A l'ouverture du formulaire "principal", tu risque d'obtenir une errreur
(dû à l'ouverture séquencielle des 2 sous-form ;-( )
tu cliqueras sur ok et cela fonctionnera tout de même...
si tel est bien le cas chez toi - dis le pour adaption
et encore désolé pour le retard et... je repart aussitôt :-(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
| "William Kameron"
|| Dans un contrôle Onglet je suis parvenu à un résultat apréciable.
|| En programmant l'évenement "OnChange" de l'onglet je peux raffraîchir la
|| page juste avant qu'elle ne s'affiche et retrouver mon enregistrment que j'ai
|| quitté de l'autre côté.
|| C'est déjà pas mal. C'est embêtant. Je voulais les deux en vis-à-vis. comme
|| un "SCROLL"
| [...]
|
| Je dois m'absenter... ce sera pour tantôt...
Le "tantôt" s'est éternisé, désolé...
Bon, pour tes deux sous-formulaire, tu peux mettre dans l'événement
"Sur activation" (form_current) ceci :
'---- sous-form Classes_f2
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F2
With Me.Parent!Ctrl_Classes_F2.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
'---- sous-form Classes_f1
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F1
With Ctrl.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
---------------------------------------
NomPK :
représente le nom de la clé primaire, identique pour les 2 sous-form
Ctrl_Classes_F1 :
représente le control sous-formulaire qui contient le formulaire Classes_F1
(qui n'a pas *forcément* le même nom que le form qu'il contient)
idem pour Ctrl_Classes_F2
A l'ouverture du formulaire "principal", tu risque d'obtenir une errreur
(dû à l'ouverture séquencielle des 2 sous-form ;-( )
tu cliqueras sur ok et cela fonctionnera tout de même...
si tel est bien le cas chez toi - dis le pour adaption
et encore désolé pour le retard et... je repart aussitôt :-(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
| "William Kameron"
|| Dans un contrôle Onglet je suis parvenu à un résultat apréciable.
|| En programmant l'évenement "OnChange" de l'onglet je peux raffraîchir la
|| page juste avant qu'elle ne s'affiche et retrouver mon enregistrment que j'ai
|| quitté de l'autre côté.
|| C'est déjà pas mal. C'est embêtant. Je voulais les deux en vis-à-vis. comme
|| un "SCROLL"
| [...]
|
| Je dois m'absenter... ce sera pour tantôt...
Le "tantôt" s'est éternisé, désolé...
Bon, pour tes deux sous-formulaire, tu peux mettre dans l'événement
"Sur activation" (form_current) ceci :
'---- sous-form Classes_f2
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F2
With Me.Parent!Ctrl_Classes_F2.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
'---- sous-form Classes_f1
Dim Ctrl As Control
Set Ctrl = Me.Parent!Ctrl_Classes_F1
With Ctrl.Form.RecordsetClone
.FindFirst "NomPK=" & NomPK
Ctrl.Form.Bookmark = .Bookmark
End With
Set Ctrl = Nothing
---------------------------------------
NomPK :
représente le nom de la clé primaire, identique pour les 2 sous-form
Ctrl_Classes_F1 :
représente le control sous-formulaire qui contient le formulaire Classes_F1
(qui n'a pas *forcément* le même nom que le form qu'il contient)
idem pour Ctrl_Classes_F2
A l'ouverture du formulaire "principal", tu risque d'obtenir une errreur
(dû à l'ouverture séquencielle des 2 sous-form ;-( )
tu cliqueras sur ok et cela fonctionnera tout de même...
si tel est bien le cas chez toi - dis le pour adaption
et encore désolé pour le retard et... je repart aussitôt :-(
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Actuellement j'ai toujours mon formulaire qui fonctionne dans un sens : Le
| changement d'enregistrement dans sous form F1 (Formulaires continus -
| tableau) induit celui de sous form F2 (Formulaire unique). Mais pas dans
| l'autre. En fait le challenge est que cela soit réciproque.
[...]
Dans le Form_Current du sous-form2 tu mets :
sFrm_Loaded = True ' (expliqué plus loin...)
Dim Ctrl As Control
Set Ctrl = Me.Parent!CtrlF1
With Me.Parent!CtrlF1.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
Dans le Form_Open du sous-form2 tu mets :
sFrm_Loaded = false
Dans le Form_Current du sous-form1 tu mets :
Dim Ctrl As Control
if sFrm_Loaded then ' teste en fait l'autre sous-form
Set Ctrl = Me.Parent!CtrlF2
With Me.Parent!CtrlF2.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
end if
Dans un module général, tu déclare la variable :
Public sFrm_Loaded as Boolean
L'explication :
Les sous-formulaires se charge les uns après les autres.
Lorsque le premier sous-form est chargé, il produit également
ses événements (via lesquels on exécute les procédures...)
Or, lorsque le premier sous-form exécure son "OnCurrent", l'autre
sous-form n'est pas encore chargé et possède encore moins
un "recordset" (et à foriori un recordsetclone).
C'est de la que vient l'erreur 2455 :-((
Il faut donc s'arranger pour que le premier sous-formulaire chargé
n'exécute le code sur son "OnCurrent" qu'à partir du moment que
l'autre est "pret"
C'est ce qu'on obtient en positionnant la variable sfm_loaded
sur Vrai dans l'autre sous-formulaire.
Note 1
L'ordre de chargement des sous-formulaires dépend de leur ordre
de création. Il se peut donc parfaitement que tu dois déplacer le test
sur la variable sfrm_loaded dans l'autre sous-form...
Si à l'ouverture du formulaire tu obtiens l'erreur 2455, tu sais que
tu dois déplacer le test dans l'autre sous-form.
Note 2
Tu écrit F1 et F2 pour les sous-formulaires...
Il faut t'assurer que tu t'adresse bien au control qui *contient* le sous
formulaire. Les assistants utilise malheureusement les mêmes noms
pour les deux - le conteneur et le contenu...
C'est pourquoi je préfixe par "Ctrl" et l'on distingue le CtrlF1 qui est
le conteneur de F1 qui est le contenu...
Evites aussi les accentués dans les noms d'objets ;-)
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Actuellement j'ai toujours mon formulaire qui fonctionne dans un sens : Le
| changement d'enregistrement dans sous form F1 (Formulaires continus -
| tableau) induit celui de sous form F2 (Formulaire unique). Mais pas dans
| l'autre. En fait le challenge est que cela soit réciproque.
[...]
Dans le Form_Current du sous-form2 tu mets :
sFrm_Loaded = True ' (expliqué plus loin...)
Dim Ctrl As Control
Set Ctrl = Me.Parent!CtrlF1
With Me.Parent!CtrlF1.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
Dans le Form_Open du sous-form2 tu mets :
sFrm_Loaded = false
Dans le Form_Current du sous-form1 tu mets :
Dim Ctrl As Control
if sFrm_Loaded then ' teste en fait l'autre sous-form
Set Ctrl = Me.Parent!CtrlF2
With Me.Parent!CtrlF2.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
end if
Dans un module général, tu déclare la variable :
Public sFrm_Loaded as Boolean
L'explication :
Les sous-formulaires se charge les uns après les autres.
Lorsque le premier sous-form est chargé, il produit également
ses événements (via lesquels on exécute les procédures...)
Or, lorsque le premier sous-form exécure son "OnCurrent", l'autre
sous-form n'est pas encore chargé et possède encore moins
un "recordset" (et à foriori un recordsetclone).
C'est de la que vient l'erreur 2455 :-((
Il faut donc s'arranger pour que le premier sous-formulaire chargé
n'exécute le code sur son "OnCurrent" qu'à partir du moment que
l'autre est "pret"
C'est ce qu'on obtient en positionnant la variable sfm_loaded
sur Vrai dans l'autre sous-formulaire.
Note 1
L'ordre de chargement des sous-formulaires dépend de leur ordre
de création. Il se peut donc parfaitement que tu dois déplacer le test
sur la variable sfrm_loaded dans l'autre sous-form...
Si à l'ouverture du formulaire tu obtiens l'erreur 2455, tu sais que
tu dois déplacer le test dans l'autre sous-form.
Note 2
Tu écrit F1 et F2 pour les sous-formulaires...
Il faut t'assurer que tu t'adresse bien au control qui *contient* le sous
formulaire. Les assistants utilise malheureusement les mêmes noms
pour les deux - le conteneur et le contenu...
C'est pourquoi je préfixe par "Ctrl" et l'on distingue le CtrlF1 qui est
le conteneur de F1 qui est le contenu...
Evites aussi les accentués dans les noms d'objets ;-)
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Actuellement j'ai toujours mon formulaire qui fonctionne dans un sens : Le
| changement d'enregistrement dans sous form F1 (Formulaires continus -
| tableau) induit celui de sous form F2 (Formulaire unique). Mais pas dans
| l'autre. En fait le challenge est que cela soit réciproque.
[...]
Dans le Form_Current du sous-form2 tu mets :
sFrm_Loaded = True ' (expliqué plus loin...)
Dim Ctrl As Control
Set Ctrl = Me.Parent!CtrlF1
With Me.Parent!CtrlF1.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
Dans le Form_Open du sous-form2 tu mets :
sFrm_Loaded = false
Dans le Form_Current du sous-form1 tu mets :
Dim Ctrl As Control
if sFrm_Loaded then ' teste en fait l'autre sous-form
Set Ctrl = Me.Parent!CtrlF2
With Me.Parent!CtrlF2.Form.RecordsetClone
.FindFirst "[Réf]= " & Me.Réf
Ctrl.Form.Bookmark = .Bookmark
End With
end if
Dans un module général, tu déclare la variable :
Public sFrm_Loaded as Boolean
L'explication :
Les sous-formulaires se charge les uns après les autres.
Lorsque le premier sous-form est chargé, il produit également
ses événements (via lesquels on exécute les procédures...)
Or, lorsque le premier sous-form exécure son "OnCurrent", l'autre
sous-form n'est pas encore chargé et possède encore moins
un "recordset" (et à foriori un recordsetclone).
C'est de la que vient l'erreur 2455 :-((
Il faut donc s'arranger pour que le premier sous-formulaire chargé
n'exécute le code sur son "OnCurrent" qu'à partir du moment que
l'autre est "pret"
C'est ce qu'on obtient en positionnant la variable sfm_loaded
sur Vrai dans l'autre sous-formulaire.
Note 1
L'ordre de chargement des sous-formulaires dépend de leur ordre
de création. Il se peut donc parfaitement que tu dois déplacer le test
sur la variable sfrm_loaded dans l'autre sous-form...
Si à l'ouverture du formulaire tu obtiens l'erreur 2455, tu sais que
tu dois déplacer le test dans l'autre sous-form.
Note 2
Tu écrit F1 et F2 pour les sous-formulaires...
Il faut t'assurer que tu t'adresse bien au control qui *contient* le sous
formulaire. Les assistants utilise malheureusement les mêmes noms
pour les deux - le conteneur et le contenu...
C'est pourquoi je préfixe par "Ctrl" et l'on distingue le CtrlF1 qui est
le conteneur de F1 qui est le contenu...
Evites aussi les accentués dans les noms d'objets ;-)
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)