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

Modification de plusieurs enregistrements

17 réponses
Avatar
Francis
Bonsoir,

Voici mon problème. Dans l'application que j'utilise, lorsque je fais
un virement de compte A vers un compte B, j'ai une procédure qui crée
deux enregistrements dans le journal des opérations: une pour le
mouvement de A->B et une pour le mouvement de B->A. Là, tout va bien.
J'ai tenté d'adapter cette procédure pour pouvoir modifier le virement,
une fois créé, et là, j'ai systématiquement un message me disant que
"La commande de l'action "atteidre suivant" n'est pas disponible pour
le moment"
Voici le code utilisé, et merci de me dire ce que je dois faire pour
que ça marche.

Dim montant As Variant
Dim pièce As String
Dim val As Variant
Dim dbs As Database
Dim rcst As DAO.Recordset

If Me!numéro <> 0 Then

Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
val = DMax("[numéro]", "[tbl journal des opérations]")
rcst.Close

montant = Me!sortie
pièce = Me!ref_pièce
entrée = 0
solde = -montant
libellé = "Virement vers compte"

DoCmd.RunCommand acCmdSaveRecord

DoCmd.RunCommand acCmdRecordsGoToNext

Me!code_compte = Me!compte2
Me!entrée = montant
Me!sortie = 0
Me!solde = montant
libellé = "Virement depuis compte"
Me!ref_pièce = pièce

End If

@+
Francis


--
Francis
fhgc@wanadoudou.fr
RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.

7 réponses

1 2
Avatar
Francis
Bonsoir Raymond et tous les autres lecteurs de ce post,
Désolé de revenir à la charge, mais ce soir je me fais jeter par la
ligne de code:
stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
("[numéro]=" & (Me![numéro] + 1))

où [numéro] est un champ numérique
avec mention "erreur d'exécution '13':Imcompatibilité de type".

Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
Bizarre!
Une idée sur la question, Docteur?

Francis

de la façon dont c'est fait, dans le formulaire stDocName, tu neux pas
atteindre la 2e écriture pour la bonne raison que tu as filtré sur la 1ere
écriture. pour pouvoir l'atteindre il faut l'indiquer dans le critère, mais
il se pose le problème que ton numéro d'écriture est alpha et non numérique,
ce qui semble bizarre.
si c'est alpha:
stLinkCriteria = ("[N°_écriture]='" & Me![N°_écriture] & "'") Or
("[N°_écriture]='" & (Me![N°_écriture] + 1) & "'")
DoCmd.OpenForm stDocName, , , stLinkCriteria
si c'est numerique:
stLinkCriteria = ("[N°_écriture]=" & Me![N°_écriture]) Or
("[N°_écriture]=" & (Me![N°_écriture] + 1))
DoCmd.OpenForm stDocName, , , stLinkCriteria

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Re,
La procédure est hyper courte: la voici:

If [type] = "V" Then stDocName = "SF virement"
If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Quelques explications en plus:
Toutes les opérations d'encaissement, de paiement ou de virement des
mes différents comptes font l'objet d'écritures dans une seule et même
table "journal des opérations", avec mention de C, D ou V selon le type
d'opération.
Pour un virement, j'ai 2 écritures: une pour mouvement du compte A vers
compte B qui est rattachée à A, et en sens inverse qui est rattachée au
compte B. Ces 2 enregistrements ont des numéros de séquence qui se
suivent. Que je sois dans la liste des opérations du compte A ou celle
du compte B, je pointe la ligne de l'opération à modifier et s'il
s'agit d'un virement ("V"), j'ai pris pour option de remonter
systématiquement à la première opération des deux: c'est ce que fait le
procédure ci-dessus. Ça, ça marche bien.

C'est ensuite dans ma procédure liée à "SF virement" que je ne parviens
pas à passer à l'enregistrement suivant pour reporter la modif sur la
deuxième ligne qui correspond à la transaction. Je te redonne le code
utilisé (j'ai volontairement réduit le nombre de valeurs à écrire):

Dim montant As Variant
Dim pièce As String
Dim val As Variant

If Me!numéro <> 0 Then ' si numéro = 0, alors je vais vers le
procédure de création dont je t'ai donné le code dans mon post
précédent.
Dim dbs As Database
Dim rcst As DAO.Recordset
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl journal des opérations",
dbOpenDynaset)
rcst.Close

montant = Me!sortie
pièce = Me!ref_pièce
solde = -montant

DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1 ' C'est ici que
ça coince. J'ai remplacé cette instruction par : "DoCmd.RunCommand
acCmdRecordsGoToNext" , ou "DoCmd.GoToRecord , , acNext" et ça ne
change rien au blocage.

Me!entrée = montant
Me!sortie = 0
Me!solde = montant
Me!ref_pièce = pièce

End If

Je fais sûrement une méga bourde à un moment, mais où??? Eh bien,
j'espère que ce sera clair pour toi.

@ plus,

Francis



--
Francis

LOI DE GUMPERSON
La probabilité qu'un évènement arrive est inversement proportionnelle
à sa désirabilité.


Avatar
Raymond [mvp]
Bonjour.

c'est moi qui ai oublié des guillemets à l'origine:

stLinkCriteria = "[numéro]=" & Me![Numéro] & " Or [numéro]=" & (Me![Numéro]
+ 1)


--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

| Bonsoir Raymond et tous les autres lecteurs de ce post,
| Désolé de revenir à la charge, mais ce soir je me fais jeter par la
| ligne de code:
| stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
| ("[numéro]=" & (Me![numéro] + 1))
|
| où [numéro] est un champ numérique
| avec mention "erreur d'exécution '13':Imcompatibilité de type".
|
| Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
| Bizarre!
| Une idée sur la question, Docteur?
|
| Francis
|
| > de la façon dont c'est fait, dans le formulaire stDocName, tu neux pas
| > atteindre la 2e écriture pour la bonne raison que tu as filtré sur la
1ere
| > écriture. pour pouvoir l'atteindre il faut l'indiquer dans le critère,
mais
| > il se pose le problème que ton numéro d'écriture est alpha et non
numérique,
| > ce qui semble bizarre.
| > si c'est alpha:
| > stLinkCriteria = ("[N°_écriture]='" & Me![N°_écriture] & "'") Or
| > ("[N°_écriture]='" & (Me![N°_écriture] + 1) & "'")
| > DoCmd.OpenForm stDocName, , , stLinkCriteria
| > si c'est numerique:
| > stLinkCriteria = ("[N°_écriture]=" & Me![N°_écriture]) Or
| > ("[N°_écriture]=" & (Me![N°_écriture] + 1))
| > DoCmd.OpenForm stDocName, , , stLinkCriteria
| >
| > --
| > @+
| > Raymond Access MVP http://OfficeSystemAccess.seneque.net/
| > http://officesystem.access.over-blog.com/
| > http://access2007.over-blog.com/
| > Pour débuter sur le forum: http://www.mpfa.info/
| >
| >
| > "Francis" a écrit dans le message de news:
| >
| >> Re,
| >> La procédure est hyper courte: la voici:
| >>
| >> If [type] = "V" Then stDocName = "SF virement"
| >> If [sortie] = 0 Then DoCmd.GoToRecord , , acGoTo, CurrentRecord -1
| >> stLinkCriteria = "[N°_écriture]=" & "'" & Me![N°_écriture] & "'"
| >> DoCmd.OpenForm stDocName, , , stLinkCriteria
| >>
| >> Quelques explications en plus:
| >> Toutes les opérations d'encaissement, de paiement ou de virement des
| >> mes différents comptes font l'objet d'écritures dans une seule et même
| >> table "journal des opérations", avec mention de C, D ou V selon le type
| >> d'opération.
| >> Pour un virement, j'ai 2 écritures: une pour mouvement du compte A vers
| >> compte B qui est rattachée à A, et en sens inverse qui est rattachée au
| >> compte B. Ces 2 enregistrements ont des numéros de séquence qui se
| >> suivent. Que je sois dans la liste des opérations du compte A ou celle
| >> du compte B, je pointe la ligne de l'opération à modifier et s'il
| >> s'agit d'un virement ("V"), j'ai pris pour option de remonter
| >> systématiquement à la première opération des deux: c'est ce que fait le
| >> procédure ci-dessus. Ça, ça marche bien.
| >>
| >> C'est ensuite dans ma procédure liée à "SF virement" que je ne parviens
| >> pas à passer à l'enregistrement suivant pour reporter la modif sur la
| >> deuxième ligne qui correspond à la transaction. Je te redonne le code
| >> utilisé (j'ai volontairement réduit le nombre de valeurs à écrire):
| >>
| >> Dim montant As Variant
| >> Dim pièce As String
| >> Dim val As Variant
| >>
| >> If Me!numéro <> 0 Then ' si numéro = 0, alors je vais vers le
| >> procédure de création dont je t'ai donné le code dans mon post
| >> précédent.
| >> Dim dbs As Database
| >> Dim rcst As DAO.Recordset
| >> Set dbs = CurrentDb
| >> Set rcst = dbs.OpenRecordset("tbl journal des opérations",
| >> dbOpenDynaset)
| >> rcst.Close
| >>
| >> montant = Me!sortie
| >> pièce = Me!ref_pièce
| >> solde = -montant
| >>
| >> DoCmd.GoToRecord , , acGoTo, CurrentRecord + 1 ' C'est ici que
| >> ça coince. J'ai remplacé cette instruction par : "DoCmd.RunCommand
| >> acCmdRecordsGoToNext" , ou "DoCmd.GoToRecord , , acNext" et ça ne
| >> change rien au blocage.
| >>
| >> Me!entrée = montant
| >> Me!sortie = 0
| >> Me!solde = montant
| >> Me!ref_pièce = pièce
| >>
| >> End If
| >>
| >> Je fais sûrement une méga bourde à un moment, mais où??? Eh bien,
| >> j'espère que ce sera clair pour toi.
| >>
| >> @ plus,
| >>
| >> Francis
|
| --
| Francis
|
| LOI DE GUMPERSON
| La probabilité qu'un évènement arrive est inversement proportionnelle
| à sa désirabilité.
|
|
Avatar
Francis
Re,

Je suis désolé, Raymond, mais ça n'est pas encore tout à fait au point.
La nouvelle écriture est bien acceptée, mais je retombe ensuite sur le
fait que "La commande ou l'action AtteindreSuivant n'est pas disponible
pour l'instant", comme si [Numéro]+1 était ignoré...
@+
Francis

Raymond [mvp] avait prétendu :
Bonjour.

c'est moi qui ai oublié des guillemets à l'origine:

stLinkCriteria = "[numéro]=" & Me![Numéro] & " Or [numéro]=" & (Me![Numéro]
+ 1)


--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Bonsoir Raymond et tous les autres lecteurs de ce post,
Désolé de revenir à la charge, mais ce soir je me fais jeter par la
ligne de code:
stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
("[numéro]=" & (Me![numéro] + 1))

où [numéro] est un champ numérique
avec mention "erreur d'exécution '13':Imcompatibilité de type".

Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
Bizarre!
Une idée sur la question, Docteur?

Francis



--
Francis

LOI DE GUMPERSON
La probabilité qu'un évènement arrive est inversement proportionnelle
à sa désirabilité.


Avatar
Raymond [mvp]
les deux écritures apparaissent-elles bien dans le formulaire ?
si oui, l'ordre est peut-être inversé et l'écriture 2 est en 1ere position.
il faut mettre une instruction Sort dans ta clause select.

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

| Re,
|
| Je suis désolé, Raymond, mais ça n'est pas encore tout à fait au point.
| La nouvelle écriture est bien acceptée, mais je retombe ensuite sur le
| fait que "La commande ou l'action AtteindreSuivant n'est pas disponible
| pour l'instant", comme si [Numéro]+1 était ignoré...
| @+
| Francis
|
| Raymond [mvp] avait prétendu :
| > Bonjour.
| >
| > c'est moi qui ai oublié des guillemets à l'origine:
| >
| > stLinkCriteria = "[numéro]=" & Me![Numéro] & " Or [numéro]=" &
(Me![Numéro]
| > + 1)
| >
| >
| > --
| > @+
| > Raymond Access MVP http://OfficeSystemAccess.seneque.net/
| > http://officesystem.access.over-blog.com/
| > http://access2007.over-blog.com/
| > Pour débuter sur le forum: http://www.mpfa.info/
| >
| >
| > "Francis" a écrit dans le message de news:
| >
| >> Bonsoir Raymond et tous les autres lecteurs de ce post,
| >> Désolé de revenir à la charge, mais ce soir je me fais jeter par la
| >> ligne de code:
| >> stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
| >> ("[numéro]=" & (Me![numéro] + 1))
| >>
| >> où [numéro] est un champ numérique
| >> avec mention "erreur d'exécution '13':Imcompatibilité de type".
| >>
| >> Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
| >> Bizarre!
| >> Une idée sur la question, Docteur?
| >>
| >> Francis
|
| --
| Francis
|
| LOI DE GUMPERSON
| La probabilité qu'un évènement arrive est inversement proportionnelle
| à sa désirabilité.
|
|
Avatar
Francis
Je crois que c'est moi qui ai fait une bourde qque part. Je fais une
vérif plus approndie et je te tiens au courant, mais ça ne sera pas
tout de suite car je dois changer d'activité pour tout de suite.
@+
Francis


Raymond [mvp] a couché sur son écran :
les deux écritures apparaissent-elles bien dans le formulaire ?
si oui, l'ordre est peut-être inversé et l'écriture 2 est en 1ere position.
il faut mettre une instruction Sort dans ta clause select.

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Re,

Je suis désolé, Raymond, mais ça n'est pas encore tout à fait au point.
La nouvelle écriture est bien acceptée, mais je retombe ensuite sur le
fait que "La commande ou l'action AtteindreSuivant n'est pas disponible
pour l'instant", comme si [Numéro]+1 était ignoré...
@+
Francis

Raymond [mvp] avait prétendu :
Bonjour.

c'est moi qui ai oublié des guillemets à l'origine:

stLinkCriteria = "[numéro]=" & Me![Numéro] & " Or [numéro]=" &
(Me![Numéro] + 1)


--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Bonsoir Raymond et tous les autres lecteurs de ce post,
Désolé de revenir à la charge, mais ce soir je me fais jeter par la
ligne de code:
stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
("[numéro]=" & (Me![numéro] + 1))

où [numéro] est un champ numérique
avec mention "erreur d'exécution '13':Imcompatibilité de type".

Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
Bizarre!
Une idée sur la question, Docteur?

Francis



--
Francis

LOI DE GUMPERSON
La probabilité qu'un évènement arrive est inversement proportionnelle
à sa désirabilité.





--
Francis

LOI DE LA GRAVITE SÉLECTIVE
En tout point de la surface du globe, toute biscotte tombera côté
beurre.




Avatar
Francis
Re,

Ça y est maintenant, tout va bien.
Je m'étais juste un peu embrouillé les pinceaux avec mes conditions If
imbriquées.
J'aurais surtout besoin de commencer par le bon bout, c'est à dire
d'apprendre le B,A, BA de vba. Pourrais-tu me conseiller un site ou un
bouquin pas trop compliqué pour ça?
Merci,

Francis


Raymond [mvp] a formulé la demande :
les deux écritures apparaissent-elles bien dans le formulaire ?
si oui, l'ordre est peut-être inversé et l'écriture 2 est en 1ere position.
il faut mettre une instruction Sort dans ta clause select.

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Re,

Je suis désolé, Raymond, mais ça n'est pas encore tout à fait au point.
La nouvelle écriture est bien acceptée, mais je retombe ensuite sur le
fait que "La commande ou l'action AtteindreSuivant n'est pas disponible
pour l'instant", comme si [Numéro]+1 était ignoré...
@+
Francis

Raymond [mvp] avait prétendu :
Bonjour.

c'est moi qui ai oublié des guillemets à l'origine:

stLinkCriteria = "[numéro]=" & Me![Numéro] & " Or [numéro]=" &
(Me![Numéro] + 1)


--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

Bonsoir Raymond et tous les autres lecteurs de ce post,
Désolé de revenir à la charge, mais ce soir je me fais jeter par la
ligne de code:
stLinkCriteria = ("[numéro]=" & Me![numéro]) Or
("[numéro]=" & (Me![numéro] + 1))

où [numéro] est un champ numérique
avec mention "erreur d'exécution '13':Imcompatibilité de type".

Pourtant, je suis à peu près sûr que hier soir ça fonctionnait.
Bizarre!
Une idée sur la question, Docteur?

Francis



--
Francis

LOI DE GUMPERSON
La probabilité qu'un évènement arrive est inversement proportionnelle
à sa désirabilité.





--
Francis

RÈGLE DE FLUGG
Plus est urgent le motif pour lequel tu es dans la file d'attente,
plus sera lent l'employé du guichet.




Avatar
Raymond [mvp]
comme tout le monde, regarde ces liens:
http://www.mpfa.info/
http://www.123ici.com/annuaire-2944

--
@+
Raymond Access MVP http://OfficeSystemAccess.seneque.net/
http://officesystem.access.over-blog.com/
http://access2007.over-blog.com/
Pour débuter sur le forum: http://www.mpfa.info/


"Francis" a écrit dans le message de news:

| Re,
|
| Ça y est maintenant, tout va bien.
| Je m'étais juste un peu embrouillé les pinceaux avec mes conditions If
| imbriquées.
| J'aurais surtout besoin de commencer par le bon bout, c'est à dire
| d'apprendre le B,A, BA de vba. Pourrais-tu me conseiller un site ou un
| bouquin pas trop compliqué pour ça?
| Merci,
|
| Francis
1 2