Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Garder le focus sur le même enregistrement après la MAJ d'un formulaire

357 views
Skip to first unread message

hadrum

unread,
Sep 23, 2008, 10:56:45 AM9/23/08
to
Bonjour,
J'ai un formulaire 1 et un sous formulaire 2 qui est incorporé dans le
formulaire 1.
Le formulaire 1 a comme source une requête 1
Le sous formulaire 2 a comme source une table 2
Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué à chacun
le code suivant pour mettre à jour le formulaire 1.

Private Sub Budget_AfterUpdate()
Forms![Formulaire1].Requery
End Sub

Le problème c'est que chaque fois je mets à jour un champs du sous formulaire
2 le focus se met automatiquement sur le 1er enregistrement. Je voudrais que le
focus reste sur le même enregistrement que j'ai mis à jour.

Merci

CErnst

unread,
Sep 23, 2008, 12:34:38 PM9/23/08
to
Private Sub Budget_AfterUpdate()
dim bk$
bk$=Forms![Formulaire1].bookmark
Forms![Formulaire1].Requery
Forms![Formulaire1].bookmark=bk$
End Sub

"hadrum" <had...@domain-xyz.in> a écrit dans le message de news:
BYidnaMUwsk...@giganews.com...

hadrum

unread,
Sep 25, 2008, 8:06:15 AM9/25/08
to
CErnst a écrit le 23/09/2008 à 18h34 :
> Private Sub Budget_AfterUpdate()
> dim bk$
> bk$=Forms![Formulaire1].bookmark
> Forms![Formulaire1].Requery
> Forms![Formulaire1].bookmark=bk$
> End Sub
>
>
>
> "hadrum" a écrit dans le message
> de news:
>
>> Bonjour,
>> J'ai un formulaire 1 et un sous formulaire 2 qui est incorporé dans le
>> formulaire 1.
>> Le formulaire 1 a comme source une requête 1
>> Le sous formulaire 2 a comme source une table 2
>> Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué
>> à
>> chacun
>> le code suivant pour mettre à jour le formulaire 1.
>>
>> Private Sub Budget_AfterUpdate()
>> Forms![Formulaire1].Requery
>> End Sub
>>
>> Le problème c'est que chaque fois je mets à jour un champs du
>> sous
>> formulaire
>> 2 le focus se met automatiquement sur le 1er enregistrement. Je voudrais
>> que le
>> focus reste sur le même enregistrement que j'ai mis à jour.
>>
>> Merci
>>
J'ai essayé ce code mais la boite de débogage apparait chaque fois que
j'introduit une nouvelle valeur. Lorsque j'appuie sur débogage il m'amène à la
la ligne :
Forms![Formulaire1].bookmark=bk$
Noter que la valeur s'enregistre et le focus reviens toujours au premier
enregistrement
Auriez vous une idée sur le problème. Merci

3stone

unread,
Sep 25, 2008, 9:15:10 PM9/25/08
to
Salut,

"hadrum"


| CErnst a écrit le 23/09/2008 à 18h34 :
| > Private Sub Budget_AfterUpdate()
| > dim bk$
| > bk$=Forms![Formulaire1].bookmark
| > Forms![Formulaire1].Requery
| > Forms![Formulaire1].bookmark=bk$
| > End Sub

| >>


| J'ai essayé ce code mais la boite de débogage apparait chaque fois que
| j'introduit une nouvelle valeur. Lorsque j'appuie sur débogage il m'amène à la
| la ligne :
| Forms![Formulaire1].bookmark=bk$
| Noter que la valeur s'enregistre et le focus reviens toujours au premier
| enregistrement
| Auriez vous une idée sur le problème. Merci


Déclare ta variable bk variant (et non string) donc, sans le "$"


Private Sub Budget_AfterUpdate()
dim bk As Variant
' ou simplement Dim Bk
bk=Forms![Formulaire1].bookmark


Forms![Formulaire1].Requery
Forms![Formulaire1].bookmark=bk

End Sub


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

hadrum

unread,
Sep 26, 2008, 10:44:32 AM9/26/08
to
Bonjor,

Après avoir changer le code et avoir mis à jour 3 valeurs ça a marché pour les
3 premières entrées mais juste après, j'ai eu le même problème que le premier
code. La boite de débogage apparait chaque fois que j'introduit une nouvelle
valeur. Lorsque j'appuie sur débogage il m'amène à la ligne.
Forms![Formulaire1].bookmark=bk

Merci

3stone

unread,
Sep 26, 2008, 11:35:34 AM9/26/08
to
Salut,

"hadrum"
[...]


| Après avoir changer le code et avoir mis à jour 3 valeurs ça a marché pour les
| 3 premières entrées mais juste après, j'ai eu le même problème que le premier
| code. La boite de débogage apparait chaque fois que j'introduit une nouvelle
| valeur. Lorsque j'appuie sur débogage il m'amène à la ligne.
| Forms![Formulaire1].bookmark=bk


Ce que je t'ai indiqué fonctionne...

mais dans ton message tu dis :

<---


Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué à chacun
le code suivant pour mettre à jour le formulaire 1.

Private Sub Budget_AfterUpdate()
Forms![Formulaire1].Requery
End Sub

--->

ma question est : pourquoi ?

Lorsque l'on saisi dans un sous-formulaire, il n'y a pas de raison de
faire un requery sur le formulaire principal, sauf usine à gaz...

hadrum

unread,
Sep 29, 2008, 7:23:06 AM9/29/08
to
Et Bien parce le formulaire que je veux mettre à jour chaque fois que je change
la valeur dans le sous formulaire est le formulaire principal.
Et le message d'erreur qui me sort est le suivant, chaque fois que je mets une
nouvelle valeur dans le sous-formulaire :
"erreur 3159 Signet non valide" sur la dernière ligne de mon code,

3stone

unread,
Sep 30, 2008, 8:07:30 AM9/30/08
to
Salut,

"hadrum"


| > <---
| > Dans le sous-formulaire 2 j'ai plusieurs champs auxquels j'ai attribué
| > à chacun
| > le code suivant pour mettre à jour le formulaire 1.
| >
| > Private Sub Budget_AfterUpdate()
| > Forms![Formulaire1].Requery
| > End Sub
| > --->
| >
| > ma question est : pourquoi ?
| >
| > Lorsque l'on saisi dans un sous-formulaire, il n'y a pas de raison de
| > faire un requery sur le formulaire principal, sauf usine à gaz...

| Et Bien parce le formulaire que je veux mettre à jour chaque fois que je change


| la valeur dans le sous formulaire est le formulaire principal.
| Et le message d'erreur qui me sort est le suivant, chaque fois que je mets une
| nouvelle valeur dans le sous-formulaire :
| "erreur 3159 Signet non valide" sur la dernière ligne de mon code,


Je ne vois pas ce qui peut être mis à jour dans le formulaire principal
lorsque ce fait un ajout ou modification dans le sous-formulaire.

Sauf si la construction n'est pas saine ou lorsque le sous-formulaire n'est
pas réellement un sous-formulaire, mais un formulaire quelconque imbriqué.

hadrum

unread,
Sep 30, 2008, 10:20:41 AM9/30/08
to
La source de mon formulaire principal est une requête qui fait la somme des
champs du sous-formulaires. Donc chaque fois que j'introduis une nouvelle valeur
dans le sous formulaire je veux mettre à jour le formulaire principal pour avoir
le dernier Total.

3stone

unread,
Sep 30, 2008, 7:55:00 PM9/30/08
to
Salut,

"hadrum"
[...]


| La source de mon formulaire principal est une requête qui fait la somme des
| champs du sous-formulaires. Donc chaque fois que j'introduis une nouvelle valeur
| dans le sous formulaire je veux mettre à jour le formulaire principal pour avoir
| le dernier Total.


C'est bien ce que je disais... ce n'est pas un sous-formulaire...

Pour avoir la somme ou comptage des champs d'un formulaire en mode continu,
il suffit de placer des zones de texte dans son pied de page.

Si tu as un champ qui se nomme [Quantite] tu mets comme source du TextBox:

= Sum([Quantite])

Pour compter les enregistrements, tu mets :

= Count(*)

Pour "fixer" la taille et ajouter des champs autres, tu peux toujours placer
un tel formulaire continu dans un formulaire principal...

hadrum

unread,
Oct 1, 2008, 1:22:07 PM10/1/08
to
3stone a �crit le 01/10/2008 � 01h55 :
> Salut,
>
> "hadrum"
> [...]
> | La source de mon formulaire principal est une requ�te qui fait la somme

> des
> | champs du sous-formulaires. Donc chaque fois que j'introduis une nouvelle
> valeur
> | dans le sous formulaire je veux mettre � jour le formulaire principal

> pour avoir
> | le dernier Total.
>
>
> C'est bien ce que je disais... ce n'est pas un sous-formulaire...
>
> Pour avoir la somme ou comptage des champs d'un formulaire en mode continu,
> il suffit de placer des zones de texte dans son pied de page.
>
> Si tu as un champ qui se nomme [Quantite] tu mets comme source du TextBox:
>
> = Sum([Quantite])
>
> Pour compter les enregistrements, tu mets :
>
> = Count(*)
>
> Pour "fixer" la taille et ajouter des champs autres, tu peux toujours
> placer
> un tel formulaire continu dans un formulaire principal...
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos g�n�rales)
Cette technique je la connais mais j'ai pas voulu l'utiliser car ma requ�te qui
somme je l'utilise pour g�n�rer des rapports et je m'en sert aussi pour d'autre
fonctions. Donc je veux vraiment l'utiliser et mettre � jour le formulaire qui
lui est associ�. J'ai trouver le m�me probl�me sur un autre forum et il parait
qu'il ont trouver la solution mais j'ai pas trouv� comment l'implanter � mon
cas.

Voici le lien :
http://www.developpez.net/forums/d482196/hardware-systemes-logiciels/microsoft-office/access/ihm/requery-formulaire-revenir-lenregistrement-cours/

Merci

3stone

unread,
Oct 2, 2008, 12:23:22 PM10/2/08
to
Salut,

"hadrum"
[...]


| Cette technique je la connais mais j'ai pas voulu l'utiliser car ma requ�te qui
| somme je l'utilise pour g�n�rer des rapports et je m'en sert aussi pour d'autre
| fonctions. Donc je veux vraiment l'utiliser et mettre � jour le formulaire qui
| lui est associ�. J'ai trouver le m�me probl�me sur un autre forum et il parait
| qu'il ont trouver la solution mais j'ai pas trouv� comment l'implanter � mon
| cas.


A relire le fil, je me demande ce que tu cherche � faire r�ellement...

- Tu dis faire de ajouts/modifs dans un sous-formulaire
- Puis tu fais un requery sur le "formulaire principal"
L�, tu dis qu'il se place sur le premier enregistrement
- Tu dis aussi que ce formulaire principal est bas� sur une requ�te
qui fait... des sommes...
Ce formulaire n'aurait donc qu'un seul enregistrement ?

Pour comprendre le bricolage, il faudrait que tu expliques clairement
sur quoi est bas� le formulaire principal, le sous-formulaire et la
relation entre les deux.

Donne un exemple des donn�es que tu manipules.

hadrum

unread,
Oct 2, 2008, 4:05:57 PM10/2/08
to
3stone a �crit le 02/10/2008 � 18h23 :
Ok je reprends,

J'ai deux tables (table1) et (Table2) qui sont li�s par un lien 1 � plusieurs
(Table1)1 � (table2) Plusieurs.
La cl� primaire de la table 1 est un champs appel� Code et la cl� primaire dans
la table 2 est UnicKey et j'ai aussi une cl� �trang�re dans la table 2 appel�
Code qui fait le lien avec la cl� primaire (Code) de la table1.
La table 2 a plusieurs champs principalement des nombres. J'ai aussi une
requ�te (Req1) qui fait la somme des champs de la table 2 par Code.
J'ai �galement un formulaire (Form2) qui a comme source la table 2 et un autre
formulaire (Form1) qui lui a comme source Req 1.
Ensuite j'ai ins�r� le Form2 Dans le Form1.
Mon but est de mettre � jour les sommes du Form1 chaque fois que je change une
valeur des champs du form 2.
Alors j'ai ins�rer la fonction requery apr�s la mise � jour du Form2. Mais
chaque fois que je change une valeur il me retourne au premier enregistrement et
il me sort la boite de d�bogage avec ce message.

erreur 3159 Signet non valide

Je voudrais qu'il reste � l'enregistrement d'o� j'ai effectuer le changement et
faire la mise � jour.


Comme j'ai mentionner au message dernier tu trouveras le m�me probl�me que j'ai
dans ce lien mais j'ai pas compris comment il ont pu r�soudre le probl�me.

http://www.developpez.net/forums/d482196/hardware-systemes-logiciels/microsoft-office/access/ihm/requery-formulaire-revenir-lenregistrement-cours/

Mathieu

unread,
Oct 6, 2008, 3:35:06 AM10/6/08
to
On 2 oct, 22:05, hadrum <had...@domain-xyz.in> wrote:
> 3stone a crit le 02/10/2008 18h23 :

>
> > Salut,
>
> > "hadrum"
> > [...]
> > | Cette technique je la connais mais j'ai pas voulu l'utiliser car ma
> > requ te qui
> > | somme je l'utilise pour g n rer des rapports et je m'en sert
> > aussi pour d'autre
> > | fonctions. Donc je veux vraiment l'utiliser et mettre jour le
> > formulaire qui
> > | lui est associ . J'ai trouver le m me probl me sur un

> > autre forum et il parait
> > | qu'il ont trouver la solution mais j'ai pas trouv comment l'implanter
> > mon
> > | cas.
>
> > A relire le fil, je me demande ce que tu cherche faire
> > r ellement...

>
> > - Tu dis faire de ajouts/modifs dans un sous-formulaire
> > - Puis tu fais un requery sur le "formulaire principal"
> > L , tu dis qu'il se place sur le premier enregistrement
> > - Tu dis aussi que ce formulaire principal est bas sur une
> > requ te

> > qui fait... des sommes...
> > Ce formulaire n'aurait donc qu'un seul enregistrement ?
>
> > Pour comprendre le bricolage, il faudrait que tu expliques clairement
> > sur quoi est bas le formulaire principal, le sous-formulaire et la
> > relation entre les deux.
>
> > Donne un exemple des donn es que tu manipules.

>
> > --
> > A+
> > Pierre (3stone) Access MVP
> > Perso:http://www.3stone.be/
> > MPFA:http://www.mpfa.info/ (infos g n rales)
>
> Ok je reprends,
>
> J'ai deux tables (table1) et (Table2) qui sont li s par un lien 1 plusieurs
> (Table1)1 (table2) Plusieurs.
> La cl primaire de la table 1 est un champs appel Code et la cl primaire dans
> la table 2 est UnicKey et j'ai aussi une cl trang re dans la table 2 appel
> Code qui fait le lien avec la cl primaire (Code) de la table1.

> La table 2 a plusieurs champs principalement des nombres. J'ai aussi une
> requ te (Req1) qui fait la somme des champs de la table 2 par Code.
> J'ai galement un formulaire (Form2) qui a comme source la table 2 et un autre

> formulaire (Form1) qui lui a comme source Req 1.
> Ensuite j'ai ins r le Form2 Dans le Form1.
> Mon but est de mettre jour les sommes du Form1 chaque fois que je change une

> valeur des champs du form 2.
> Alors j'ai ins rer la fonction requery apr s la mise jour du Form2. Mais

> chaque fois que je change une valeur il me retourne au premier enregistrement et
> il me sort la boite de d bogage avec ce message.

>
> erreur 3159 Signet non valide
>
> Je voudrais qu'il reste l'enregistrement d'o j'ai effectuer le changement et
> faire la mise jour.
>
> Comme j'ai mentionner au message dernier tu trouveras le m me probl me que j'ai
> dans ce lien mais j'ai pas compris comment il ont pu r soudre le probl me.
>
> http://www.developpez.net/forums/d482196/hardware-systemes-logiciels/...

Bonjour,
et un truc du style :

Private Sub Budget_AfterUpdate()
Forms![Formulaire1].form.Recordset.Requery
End Sub

Mettant à jour uniquement l'enregistrement du form1 en cour.
Je ne sais pas si j'ai bien tout compris alors désolé si je réponds à
coté...
Mathieu

0 new messages