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

Boucle

9 réponses
Avatar
Chevrot
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot

9 réponses

Avatar
ze Titi
Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Chevrot
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec la
table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20 champs
dont un champ « Numéro » dont la valeur se situe entre 1 et X step 1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






Avatar
ze Titi
Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Avatar
Chevrot
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d’avance de vos conseils

Je dispose d’une Base « Base 1 » comportant un lien « Batch 12 ADC», avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte 20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n’exécute cette boucle que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info








Avatar
Jessy Sempere
Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12 ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info










Avatar
Chevrot
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12 ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas zappé
un
élément...
Dis-nous !

Dans ton message
Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12 ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1 et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info















Avatar
Jessy Sempere
Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
...
ton code
...
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message

Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

















Avatar
Chevrot
Merci, ça marche parfaitement. Un grand merci à Ze Titi et Jessy Sempere pour
votre aide compétente, rapide et compréhensive des failles que j'ai dans
Access.

J'ai une autre question, toujours relative aux boucles:

Je dispose d'une table "Couples" à trois champs

Numéro Prix 1 Prix 2
1 25.50 110.25
2 132.18 125.41
3 78.25 120.25
et ainsi de suite jusqu'à l'enregistrement 720.

La valeur de Numéro (numérique) s'étage donc de 1 à 720.

Je cherche à rédiger une procédure en boucle qui crée, pour les valeurs de
Numéro de 1 à 720, à partir d'une requête création de table, "AAA"
(comportant le champ Prix 1 et le champ Prix 2), effectue un certain nombre
d'opérations (DoCmd.OpenQuery etc), puis passe à la valeur suivante de Numéro
etc jusqu'à 720. Il y a toujours la même condition, que le nombre
d'enregistrements dans la table créée par "AAA" soit <>0.

Pouvez vous m'aider à rédiger cette nouvelle boucle?

Merci d'avance

Chevrot


Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
....
ton code
....
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message

Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






















Avatar
ze Titi
Salut Chevrot !

Je pense qu'il aurait été bon de créer un nouveau post puisque le sujet
est différent. Bref...

Dim rs as DAO.Recordset
set rs=CurrentDb.OpenRecordset("Couples",dbOpendynaset)
rs.MoveLast
rs.MoveFirst
While not rs.EOF
'Opérations à effectuer
rs.MoveNext
Wend
rs.Close
Set rs=Nothing

Cette boucle te permet de parcourir tous les enregistrements de ta
table "Couples"

En ce jour exceptionnel du mercredi 04/04/2007, tu nous as très
généreusement gratifié du message suivant:

Merci, ça marche parfaitement. Un grand merci à Ze Titi et Jessy Sempere pour
votre aide compétente, rapide et compréhensive des failles que j'ai dans
Access.

J'ai une autre question, toujours relative aux boucles:

Je dispose d'une table "Couples" à trois champs

Numéro Prix 1 Prix 2
1 25.50 110.25
2 132.18 125.41
3 78.25 120.25
et ainsi de suite jusqu'à l'enregistrement 720.

La valeur de Numéro (numérique) s'étage donc de 1 à 720.

Je cherche à rédiger une procédure en boucle qui crée, pour les valeurs de
Numéro de 1 à 720, à partir d'une requête création de table, "AAA"
(comportant le champ Prix 1 et le champ Prix 2), effectue un certain nombre
d'opérations (DoCmd.OpenQuery etc), puis passe à la valeur suivante de Numéro
etc jusqu'à 720. Il y a toujours la même condition, que le nombre
d'enregistrements dans la table créée par "AAA" soit <>0.

Pouvez vous m'aider à rédiger cette nouvelle boucle?

Merci d'avance

Chevrot


Re,

Dans ce cas, tu peux utiliser une autre variable

dim kMax as integer

kMax = dmax("Numéro", "[Batch 12 ADC]")

If kMax <> 0 then
....
ton code
....
End if

--
@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci beaucoup.

En fait le conseil de Ze Titi était bon; je viens de m'apercevoir que
j'avais lancé la boucle alors que le nombre d'enregistrements de Batch 12
ADC
était 0, ce qui peut arriver dans l'exécution totale du code précédant le
lancement de la boucle.

Il faut donc que j'introduise quelque part une condition du type
"si le nombre d'enregistrements de Batch 12 ADC = 0 aller à la fin de la
procédure.

merci de m'aider en m'indiquant comment introduire cette condition et où
la
placer?

Merci de vos conseils

Chevrot


Bonjour

Le problème vien du fait que tu dois sortir la variable K de ton
instruction
SQL...

Par contre, je pense qu'il y a plus simple, essais :

Sub Create_Ident()
Dim strSql As String
Dim K As integer
For K = 1 to dmax("Numéro", "[Batch 12 ADC]")
strSQL = "Select * From [Ident 003 A 03] " _
& "Where [Batch 12 ADC].[Numéro] = " & K
CurrentDb.execute strSQL
Next
End Sub

Tiens nous au courant...

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Chevrot" a écrit dans le message de
news:
Merci de ton message; j'ai bien sur corrigé [Batch 12 ADC].

Mais j'obtiens la réponse "utilisation incorrecte de Null".
Que Faire?

Merci d'avance

Chevrot


Je suppose que tu as corrigé l'erreur de frappe dans le nom de la
table, j'ai mis [Batch 23 ADC], c'est [Batch 12 ADC], bien entendu...

Dans ton message
Merci beaucoup; Lorsque j'exécute la procédure, j'ai le message
d'erreur
"utilisation incorrecte de Null". Le champ "Numéro" est en fait un
champ
numérique. Est la cause du message et que faire?

Merici d'avance.

Chevrot


Bonjour Chevrot

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To DMax("Numéro","[Batch 23 ADC]")
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A
09").SQL,InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing
End Sub

Ca me paraît tellement simple que je me demande si je n'ai pas
zappé
un
élément...
Dis-nous !

Dans ton message

Bonjour à tous, et merci d'avance de vos conseils

Je dispose d'une Base « Base 1 » comportant un lien « Batch 12
ADC»,
avec
la table de même nom dans une Base « Base 2 ». Batch 12 ADC
comporte
20
champs dont un champ « Numéro » dont la valeur se situe entre 1
et X
step
1.

La procédure Création_Ident développée ci-dessous exécute une
bouche
pour K
de 1 à 1000 ; En fait, je souhaiterai que elle n'exécute cette
boucle
que
pour des valeurs de K comprises entre 1 et la X (valeur maximum du
champ «
Numéro» de la Table « [Batch 12 ADC] »).

Sub Création_Ident()
Dim db As DAO.Database
Dim SQL As String
Dim K As Integer
Dim rq As DAO.QueryDef
Set db = CurrentDb()
For K = 1 To 1000
DoCmd.SetWarnings False
DoCmd.OpenQuery "Ident 003 A 03", acViewNormal, acEdit
SQL = Left(db.QueryDefs("Ident 003 A 09").SQL,
InStrRev(db.QueryDefs("Ident 003 A 09").SQL, ";") - 1)
SQL = SQL & "WHERE([Batch 12 ADC].[Numéro] =K)"
Set rq = db.CreateQueryDef("Ident 003 A 09 0000A", SQL)
DoCmd.OpenQuery "Ident 003 A 10", acViewNormal, acEdit
DoCmd.DeleteObject acQuery, "Ident 003 A 09 0000A"
Next K
Set rq = Nothing
Set db = Nothing

Merci de votre aide.

Chevrot


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info
















--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info