OVH Cloud OVH Cloud

Code pour For Next

2 réponses
Avatar
Martin Giguere
Bonjour à tous,

Je cherche à faire exécuter une Macro, autant de fois qu'il y a
d'enregistrement dans une table [NbEnr]

En fait je veux que la macro s'exécute sur chacun des enregistrements de ma
table,

Je crois qu'une boucle For...Next ferait l'affaire, mais j'en ignore la
syntaxe.

Pouvez-vous m'aider
Merci

--
Martin

2 réponses

Avatar
Damien Mermoz
Bonjour,

Sur office 2000 ou +, pense à référencer DAO ( dans VBE outilréférence
cocher microsoft DAO.3.6)

dim db as dao.database
dim rs as dao.recordset

set db = currentdb
set rs = db.openrecordset("ta table")

while not rs.eof
docmd.runmacro "ta macro" 'ou bien ta procédure
rs.movenext
wend

En espèrant t'aider.
A +
Damien.

"Martin Giguere" a écrit dans le message
news:
Bonjour à tous,

Je cherche à faire exécuter une Macro, autant de fois qu'il y a
d'enregistrement dans une table [NbEnr]

En fait je veux que la macro s'exécute sur chacun des enregistrements de
ma

table,

Je crois qu'une boucle For...Next ferait l'affaire, mais j'en ignore la
syntaxe.

Pouvez-vous m'aider
Merci

--
Martin




Avatar
Xavier HUE
Bonjour Martin,

En Macro, je ne suis pas sûr que l'on dispose de toutes
les instructions nécessaires.

En VBA, la syntaxe de For / Next (à voir dans l'aide en
ligne)
For Variable1 = BorneInférieur to BorneSupérieure Step
Incrément
Next Variable1

Mais pour ton cas, While / Wend et plus indiqué (ou Do /
Loop)

Dim db As DAO.Database
Dim Frd As DAO.Recordset


Set db = CurrentDb
Set Frd = db.OpenRecordset("SELECT .....", dbOpenDynaset)

If Not (Frd.BOF) Then 'Au moins un enregistrement ?
Frd.MoveFirst 'Se positionner sur le premier

While Not (Frd.EOF) 'Pour chacun des enregistrements
'... Actions à exécuter ...
Frd.MoveNext 'Enregistrement suivant
Wend 'Reprendre la boucle
End If

Frd.Close
Set Frd = Nothing
db.Close
Set db = Nothing

Cordialement.