OVH Cloud OVH Cloud

Loop sur des feuilles de réponses dynamiques

9 réponses
Avatar
La Mouette
Bonjour,

J'ai un formulaire dans lequels j'entre des nouveaux enregistrement (des cheques). Lorsque je clique ensuite sur un bouton, je veux faire des traitements sur chacun de ces nouveaux enregistrements

J'ai ce qui suit pour le moment, mais ca fait le tour de TOUS les cheques de la table, pas seulement ceux que je viens d'entrer. Comment Faire

Dim rst As DAO.Recordse
Set rst = db.OpenRecordset("Cheque"

Do Until rst.EO
rst.Edi
If rst("percepteur") = "Fiducie" The
rst("MontantClient_Dispo") = -
End I

rst.updat
rst.MoveNex
Loo

Merci de votre aide!

9 réponses

Avatar
3stone
Salut,

"La Mouette"
J'ai un formulaire dans lequels j'entre des nouveaux enregistrement (des cheques). Lorsque je
clique ensuite sur un bouton, je veux faire des traitements sur chacun de ces nouveaux

enregistrements.

J'ai ce qui suit pour le moment, mais ca fait le tour de TOUS les cheques de la table, pas
seulement ceux que je viens d'entrer. Comment Faire?


Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("Cheque")

Do Until rst.EOF
rst.Edit
If rst("percepteur") = "Fiducie" Then
rst("MontantClient_Dispo") = -1
End If

rst.update
rst.MoveNext
Loop



Et qu'est ce qui permettrai de distinguer les anciens des nouveaux ?

ou l'inverse... ;-)


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
La Mouette
Rien.... ils sont tous pareils, sinon j'aurais utilisé une requête.

J'ai une feuille dynamique avec les champ à remplir et j'entre tous les chèques nouveaux, quand je clique sur "Mise a Jour" je veux faire des remplir les champs de ces cheques qui étais cachés a l'usager avant de les sauver.

C'est pas clair?
Avatar
La Mouette
J'ai essayé de faire ce qui suit lorsque j'appuyais sur "Mise A Jour", mais ca s'executait sur le dernier enregistrement uniquement

If Forms!Form1!Form2!percepteur = "Fiducie" The
Forms!Form1![Form2].Form!MontantClient_Dispo = -
End I
DoCmd.Requer
Avatar
3stone
Salut,

"La Mouette"
Rien.... ils sont tous pareils, sinon j'aurais utilisé une requête.


donc...


J'ai une feuille dynamique avec les champ à remplir et j'entre tous les chèques nouveaux, quand je
clique sur "Mise a Jour" je veux faire des remplir les champs de ces cheques qui étais cachés a

l'usager avant de les sauver.

C'est pas clair?



Non, car "j'entre tous les chèques nouveaux"...

sous entend que tu fait cela dans un formulaire (sûrement en mode continu)
et que, le fait de changer d'enregistrement sauve l'enregistrement (cheque) actuel.

A partir de là, impossible de le distinguer d'un ancien enregistrement !

Si je comprends ce que tu veux faire... tu peux faire cela dans
l'événement "Avant mise à jour" du formulaire (de l'enregistrement courant, en fait)


If [percepteur] = "Fiducie" Then

[MontantClient_Dispo] = True

end if



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Eric
"=?Utf-8?B?TGEgTW91ZXR0ZQ==?="
écrivait news::

Bonjour,

J'ai un formulaire dans lequels j'entre des nouveaux enregistrement
(des cheques). Lorsque je clique ensuite sur un bouton, je veux faire
des traitements sur chacun de ces nouveaux enregistrements.

J'ai ce qui suit pour le moment, mais ca fait le tour de TOUS les
cheques de la table, pas seulement ceux que je viens d'entrer. Comment
Faire?

Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("Cheque")

Do Until rst.EOF
rst.Edit
If rst("percepteur") = "Fiducie" Then
rst("MontantClient_Dispo") = -1
End If

rst.update
rst.MoveNext
Loop

Merci de votre aide!



Bonjour,

Une idée peut-être:
Stocker le numero d'enregistrement au moment de la création du 1er
enregistrement avec ce formulaire.
Puis faire une boucle partant du dernier juqu'à ce numero, dans laquelle
on invoquerait la methode Edit puis Update.

Tu declares une variable de portée Module (module de formulaire)
Dim DernierEnreg as Long

Sur Ouverture de ton formulaire, tu atteins un nouveau enregistrement et
tu stockes dans la variable DernierEnreg le rang du dernier numéro saisi:

Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
DernierEnreg = Me.Recordset.RecordCount
End Sub

Sur l'évènement clic de ton bouton, apres avoir sauvé le dernier
enregistrement:

Private Sub Commande1_Click()
Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.MoveLast
Do While rs!NumeroCheque > DernierEnreg
rs.edit
' ici ton traitement
rs.update
rs.MovePrevious
Loop
End Sub


A+
Eric

Avatar
3stone
Salut Eric,

"Eric"

Une idée peut-être:



Je pense qu'il y a simplement incompréhension
sur l'expression "nouveaux enregistrements".

Beaucoup de personnes habituées à Word et Excel
pense que tant que l'on à pas sauvé, les enregistrements
ne sont pas encore "dans" la base...

Je pense que ce qu'il veut faire doit ce faire dans
l'avant mise à jour... comme je l'indique dans mon post.



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
La Mouette
En effet.. je n'avais pas pensée a cette solution!!! Ca marche Merci!
Avatar
Eric
Bonsoir Pierre,

J'avais pris le post en cours en parallele de ta 1ere réponse et puis
j'étais passé à autre chose. En fermant certaines fenetres j'ai vu que
j'avais pas répondu alors j'y suis allé de ma belle plume ... et j'étais
resté sur le bout de code sans trop réfléchir.

En plus ta proposition me parait la meilleure car on a toute l'info pour
traiter chaque élément saisi.

A+
Eric



"3stone" écrivait news:#Ke7Q6ZTEHA.808
@tk2msftngp13.phx.gbl:

Salut Eric,

"Eric"

Une idée peut-être:



Je pense qu'il y a simplement incompréhension
sur l'expression "nouveaux enregistrements".

Beaucoup de personnes habituées à Word et Excel
pense que tant que l'on à pas sauvé, les enregistrements
ne sont pas encore "dans" la base...

Je pense que ce qu'il veut faire doit ce faire dans
l'avant mise à jour... comme je l'indique dans mon post.



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------








Avatar
sylvie raynaud
Pas de problèmes,supprimer les chèques.
"La Mouette" a écrit dans le message
de news:
Bonjour,

J'ai un formulaire dans lequels j'entre des nouveaux enregistrement (des
cheques). Lorsque je clique ensuite sur un bouton, je veux faire des

traitements sur chacun de ces nouveaux enregistrements.

J'ai ce qui suit pour le moment, mais ca fait le tour de TOUS les cheques
de la table, pas seulement ceux que je viens d'entrer. Comment Faire?


Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("Cheque")

Do Until rst.EOF
rst.Edit
If rst("percepteur") = "Fiducie" Then
rst("MontantClient_Dispo") = -1
End If

rst.update
rst.MoveNext
Loop

Merci de votre aide!