salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du
txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde
si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour
les champs qui ont le meme mois et client, si elletrouve pas de
correspondance mois client, elle fabrique un nouveau en mettant "F" &
l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a
plus de Dmax et ça merde...
j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis
qu'il y a peut etre ici des gens tellements forts que meme avec mon code
pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme)
qui fait que ça merde au changement d'année...
le message d'erreur est "incompatiblité de type" et le débogage amene a 2
lignes en dessous du else :
:----------
Else
strnumero = DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'")
strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA
-------------------
a ce moment la variable strnumero prend la valeur "F05" au lieu de "001"
voila le code :
Function Synchro_numeros()
Set dbs = CurrentDb
sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date
FROM Sync_Cal" _
& " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;"
'Debug.Print sql
Set rst = dbs.OpenRecordset(sql)
If rst.EOF Then Exit Function
rst.MoveFirst
While Not rst.EOF
strmois = rst!mois
strclient = rst!Client
lettre = "F"
an = Format$(rst!Date, "yy")
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Camille,
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde...
j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001"
voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")
Si tu changes d'année, DMax(...) te retourne Null donc mets :
strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) =
'" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then
je ferai
If Not IsNull(refexiste) Then
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du
txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde
si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour
les champs qui ont le meme mois et client, si elletrouve pas de
correspondance mois client, elle fabrique un nouveau en mettant "F" &
l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a
plus de Dmax et ça merde...
j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis
qu'il y a peut etre ici des gens tellements forts que meme avec mon code
pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme)
qui fait que ça merde au changement d'année...
le message d'erreur est "incompatiblité de type" et le débogage amene a 2
lignes en dessous du else :
:----------
Else
strnumero = DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'")
strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA
-------------------
a ce moment la variable strnumero prend la valeur "F05" au lieu de "001"
voila le code :
Function Synchro_numeros()
Set dbs = CurrentDb
sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date
FROM Sync_Cal" _
& " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;"
'Debug.Print sql
Set rst = dbs.OpenRecordset(sql)
If rst.EOF Then Exit Function
rst.MoveFirst
While Not rst.EOF
strmois = rst!mois
strclient = rst!Client
lettre = "F"
an = Format$(rst!Date, "yy")
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde...
j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001"
voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde... j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001" voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")
Si tu changes d'année, DMax(...) te retourne Null donc mets :
strnumero = Nz(DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then
je ferai
If Not IsNull(refexiste) Then
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui
contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002
etc.. elle regarde si par hasard le numero existe déja, et si c'est
le cas elle l'utilise, pour les champs qui ont le meme mois et
client, si elletrouve pas de correspondance mois client, elle
fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax
(right numero,3)+1... si on change d'année elle a plus de Dmax et ça
merde... j'ai cherché et modifié et cherché... et je trouves pas ,
alorsje me
dis qu'il y a peut etre ici des gens tellements forts que meme avec mon
code pourri, ils pourraient arriver a voir en 2 minutes le truc
(surement énorme) qui fait que ça merde au changement d'année...
le message d'erreur est "incompatiblité de type" et le débogage
amene a 2 lignes en dessous du else :
:----------
Else
strnumero = DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'")
strnumero = Format$(strnumero + 1, "000") ''''CETTE
LIGNE LA -------------------
a ce moment la variable strnumero prend la valeur "F05" au lieu de
"001" voila le code :
Function Synchro_numeros()
Set dbs = CurrentDb
sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client,
Sync_Cal.date FROM Sync_Cal" _
& " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;"
'Debug.Print sql
Set rst = dbs.OpenRecordset(sql)
If rst.EOF Then Exit Function
rst.MoveFirst
While Not rst.EOF
strmois = rst!mois
strclient = rst!Client
lettre = "F"
an = Format$(rst!Date, "yy")
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde... j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001" voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")
Pour info, ton problème d'array, c'est résolu ? (Post : boucler sur un tableau) -- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ok, merci éric ça marche !
Eric wrote:
Bonjour Camille,
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde... j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001" voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")
Pour info, ton problème d'array, c'est résolu ?
(Post : boucler sur un tableau)
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ok, merci éric ça marche !
Eric wrote:
Bonjour Camille,
Si tu changes d'année, DMax(...) te retourne Null donc mets :
strnumero = Nz(DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then
je ferai
If Not IsNull(refexiste) Then
--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui
contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002
etc.. elle regarde si par hasard le numero existe déja, et si c'est
le cas elle l'utilise, pour les champs qui ont le meme mois et
client, si elletrouve pas de correspondance mois client, elle
fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax
(right numero,3)+1... si on change d'année elle a plus de Dmax et ça
merde... j'ai cherché et modifié et cherché... et je trouves pas ,
alorsje me
dis qu'il y a peut etre ici des gens tellements forts que meme avec mon
code pourri, ils pourraient arriver a voir en 2 minutes le truc
(surement énorme) qui fait que ça merde au changement d'année...
le message d'erreur est "incompatiblité de type" et le débogage
amene a 2 lignes en dessous du else :
:----------
Else
strnumero = DMax("right([numero],3)", "sync_cal",
"left([numero],3) = '" & lettre & an & "'")
strnumero = Format$(strnumero + 1, "000") ''''CETTE
LIGNE LA -------------------
a ce moment la variable strnumero prend la valeur "F05" au lieu de
"001" voila le code :
Function Synchro_numeros()
Set dbs = CurrentDb
sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client,
Sync_Cal.date FROM Sync_Cal" _
& " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;"
'Debug.Print sql
Set rst = dbs.OpenRecordset(sql)
If rst.EOF Then Exit Function
rst.MoveFirst
While Not rst.EOF
strmois = rst!mois
strclient = rst!Client
lettre = "F"
an = Format$(rst!Date, "yy")
Pour info, ton problème d'array, c'est résolu ? (Post : boucler sur un tableau) -- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Ok, merci éric ça marche !
Eric wrote:
Bonjour Camille,
Si tu changes d'année, DMax(...) te retourne Null donc mets : strnumero = Nz(DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'"),0)
De même DLookUp(...) peut retourner Null donc plutot que de faire
If refexiste <> "" Then je ferai If Not IsNull(refexiste) Then
-- A+ Eric Un petit tour ici : http://users.skynet.be/mpfa/ Accès aux archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
salut a tous, merci encore pour vos réponses, ce forum est génial...
bon, voila 10 heures que je bute sur une boucle en vba.
la boucle parcourt un recordset et s'interesse a un champ qui contient du txt formaté comme ceci F04001,F04002,.....F05001,F05002 etc.. elle regarde si par hasard le numero existe déja, et si c'est le cas elle l'utilise, pour les champs qui ont le meme mois et client, si elletrouve pas de correspondance mois client, elle fabrique un nouveau en mettant "F" & l'année en "yy" & le dmax (right numero,3)+1... si on change d'année elle a plus de Dmax et ça merde... j'ai cherché et modifié et cherché... et je trouves pas , alorsje me dis qu'il y a peut etre ici des gens tellements forts que meme avec mon code pourri, ils pourraient arriver a voir en 2 minutes le truc (surement énorme) qui fait que ça merde au changement d'année... le message d'erreur est "incompatiblité de type" et le débogage amene a 2 lignes en dessous du else : :---------- Else strnumero = DMax("right([numero],3)", "sync_cal", "left([numero],3) = '" & lettre & an & "'") strnumero = Format$(strnumero + 1, "000") ''''CETTE LIGNE LA ------------------- a ce moment la variable strnumero prend la valeur "F05" au lieu de "001" voila le code :
Function Synchro_numeros() Set dbs = CurrentDb sql = "SELECT Sync_Cal.numero, Sync_Cal.mois, Sync_Cal.client, Sync_Cal.date FROM Sync_Cal" _ & " WHERE (((Sync_Cal.numero) Is Null)) ORDER BY Sync_Cal.date;" 'Debug.Print sql Set rst = dbs.OpenRecordset(sql) If rst.EOF Then Exit Function rst.MoveFirst While Not rst.EOF strmois = rst!mois strclient = rst!Client lettre = "F" an = Format$(rst!Date, "yy")