Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

13 réponses
Avatar
hadrum
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

10 réponses

1 2
Avatar
CErnst
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


Avatar
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



"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
Avatar
3stone
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)
Avatar
hadrum
3stone a écrit le 26/09/2008 à 03h15 :
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)


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
Avatar
3stone
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...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
hadrum
3stone a écrit le 26/09/2008 à 17h35 :
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...

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


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,
Avatar
3stone
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é.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
hadrum
3stone a écrit le 30/09/2008 à 14h07 :
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é.

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


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.
Avatar
3stone
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)
Avatar
hadrum
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
1 2