-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans un
champ une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être
ça...
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
08f901c34aaa$a0ae7770$
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante, et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans un
champ une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être
ça...
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" <jean@piegeacons.apinc.org> a écrit dans le
message news:
08f901c34aaa$a0ae7770$a301280a@phx.gbl...
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante, et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans un
champ une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être
ça...
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
08f901c34aaa$a0ae7770$
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante, et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
D'après mes recherches,
159 donne en binaire 1001 1111
159 = 3 * 53
53 est 1 nombre premier
53 base 10 = 110 101 base 2
Ce qui me fait fortement penser que 159 n'est pas 1 nombre particulier :)
En gros.. mon post ne 'a pas servi à grand chose...
D'après mes recherches,
159 donne en binaire 1001 1111
159 = 3 * 53
53 est 1 nombre premier
53 base 10 = 110 101 base 2
Ce qui me fait fortement penser que 159 n'est pas 1 nombre particulier :)
En gros.. mon post ne 'a pas servi à grand chose...
D'après mes recherches,
159 donne en binaire 1001 1111
159 = 3 * 53
53 est 1 nombre premier
53 base 10 = 110 101 base 2
Ce qui me fait fortement penser que 159 n'est pas 1 nombre particulier :)
En gros.. mon post ne 'a pas servi à grand chose...
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
07a001c34aae$a25c51b0$
Merci pour vos réponses, mais en fait si je change mes
données (suppress de lignes ou autres), le pb apparait
encore à la 159eme itération, et les champs en question
n'ont pas de valeur null justement.-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans unchamp une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit êtreça...
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:08f901c34aaa$a0ae7770$
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante,
et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
.
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" <jean@piegeacons.apinc.org> a écrit dans le
message news:
07a001c34aae$a25c51b0$a501280a@phx.gbl...
Merci pour vos réponses, mais en fait si je change mes
données (suppress de lignes ou autres), le pb apparait
encore à la 159eme itération, et les champs en question
n'ont pas de valeur null justement.
-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans un
champ une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit être
ça...
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" <jean@piegeacons.apinc.org> a écrit dans le
message news:
08f901c34aaa$a0ae7770$a301280a@phx.gbl...
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante,
et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
.
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
07a001c34aae$a25c51b0$
Merci pour vos réponses, mais en fait si je change mes
données (suppress de lignes ou autres), le pb apparait
encore à la 159eme itération, et les champs en question
n'ont pas de valeur null justement.-----Message d'origine-----
Bonjour
Il y a de forte chance que l'enregistrement 159
contienne dans unchamp une valeur Null et c'est de la que doit venir le
problème
Faudrait avoir ton code pour t'en dire plus mais je
pense que ça doit êtreça...
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:08f901c34aaa$a0ae7770$
Bonjour
Est-ce que 159 est un nombre particulier ?
Je m'explique j'ai une boucle qui effectue un traitement
sur une table, et au bout du 159eme passage ca plante,
et
ce même en changeant les données à traiter.
Merci d'avance
Jean
.
.
-----Message d'origine-----
Effectivement c'est long... ;-))
Bon j'ai refait un peu à mon goût ton code mais le pb
est que je ne peux pas
tester...
Peux-tu m'envoyer un bout de ta base en la zippant s'il
te plaît pour que je
puisse
tester ?
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
0a8501c34ab1$6bcc6510$
Oui merci, je veux bien mais c'est assez long :
Private Sub Commande15_Click()
Dim RepMsg
Dim NbApp, NbClient As Integer
RepMsg = MsgBox("Souhaitez-vous lancer la validation
mensuelle maintenant ?", 4)
If RepMsg = 6 Then
'Ouverture de la base
Dim dbscurrent As Database
Set dbscurrent = OpenDatabase(CurrentDb.Name)
'a faire ici requetes de mises à jour
'Déclaration des variables
Dim ValOpr, RetCherche, ResTmp, ValOprTmp
Dim OprPrec As Double
Dim OprPrecTmp As Double
Dim OptPrec As String
Dim bool_calc As Boolean
Dim NbLigneMAJ As Integer
'Récupération des bornes des dates
Dim qdfLimDate As QueryDef
Dim rstLimDate As Recordset
Set qdfLimDate = dbscurrent.CreateQueryDef("")
qdfLimDate.SQL = "SELECT [Date début mois], [Date
fin mois] FROM [Table des paramètres du mois] WHERE
[Impress] <> 0"
Set rstLimDate = qdfLimDate.OpenRecordset()
'Dim DateDeb, DateFin As Date
Dim Mois_Valid As Integer
With rstLimDate
'DateDeb = ![Date début mois]
'DateFin = ![Date fin mois]
Mois_Valid = Month(![Date début mois])
End With
rstLimDate.Close
qdfLimDate.Close
Set rstLimDate = Nothing
Set qdfLimDate = Nothing
'Requete des formules
Dim qdfformule As QueryDef
Set qdfformule = dbscurrent.CreateQueryDef("")
qdfformule.SQL = "SELECT * FROM [data warehouse -
Liste Formules] WHERE [Calcul] = -1;"
Dim rstformule
Set rstformule = qdfformule.OpenRecordset()
With rstformule
Do While Not .EOF
NbLigneMAJ = 0
'Requete du DW
Dim qdfdw As QueryDef
Set qdfdw = dbscurrent.CreateQueryDef("")
'qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [date de création] > #" & Format(!
[DateEffet], "dd/mm/yyyy") & "# AND [date de création] >
#" & Format(DateDeb, "dd/mm/yyyy") & "# AND [date de
création] < #" & Format(DateFin, "dd/mm/yyyy") & "#;"
qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [mois] = " & Mois_Valid & ";"
Dim rstdw As Recordset
Set rstdw = qdfdw.OpenRecordset()
With rstdw
Do While Not .EOF
bool_calc = True
OprPrec = 0
'Requete des lignes de calcul
(avec appel récursif pour les conditions)
Dim qdfcalcul As QueryDef
Set qdfcalcul =
dbscurrent.CreateQueryDef("")
qdfcalcul.SQL = "SELECT * FROM
[data warehouse - Calculs formules] WHERE [NumFormule]
= " & rstformule![NumFormule] & ";"
Dim rstcalcul As Recordset
Set rstcalcul =
qdfcalcul.OpenRecordset()
With rstcalcul
Do While Not .EOF
'on prend la valeur de
l'opérande ou la valeur du champ dont le nom est dans
opérande
If (![OprIsChp] = "O")
Then
ValOpr = rstdw.Fields
(![Operande])
Else
ValOpr = ![Operande]
End If
'on teste s'il y a des
conditions sur la ligne de calcul sur laquelle on est
If (![IndCond] = "O")
Then
ValOprTmp = ValOpr
RetCherche =
ChercheCondImbr(![NumFormule] & "L" & ![NumLigne],
ValOprTmp, dbscurrent, rstdw, "", "")
If IsNumeric
(RetCherche) Then
'elle renvoit
numérique, on met en tant qu'opérande
RetCherche =
Replace(RetCherche, ",", ".")
ValOpr =
RetCherche
Else
'elle renvoit du
texte, si c vrai on fait calcul, sinon non
If RetCherche
= "Faux" Then
bool_calc =
False
End If
End If
End If
'CALCUL
If (![NumLigne] <> 1)
Then
If bool_calc = True
Then
ValOpr = Replace
(ValOpr, ",", ".")
'MsgBox "opératio
n
: " & CDbl(ValOpr) & OptPrec & OprPrec
OprPrec =
EffectuerOpération(CDbl(ValOpr), OprPrec, OptPrec)
OprPrec = Replace
(OprPrec, ",", ".")
End If
If (![Operateur]
<> "") Then
OptPrec = !
[Operateur]
End If
Else
ValOpr = Replace
(ValOpr, ",", ".")
OprPrec = CDbl
(ValOpr)
OptPrec = !
[Operateur]
End If
.MoveNext
Loop
End With
If (bool_calc = True) Then
'condition sur résultat final
If (rstformule![IndCond]
= "O") Then
OprPrecTmp = OprPrec
ResTmp = ChercheCondImbr
("R" & rstformule![NumFormule], OprPrecTmp, dbscurrent,
rstdw, "", "")
ResTmp = Replace
(ResTmp, ",", ".")
'MsgBox "avant erreur : "
& ResTmp & " et ref : " & rstdw![référence de
l'opération]
dbscurrent.Execute "insert into [debug]([ref]) VALUES ('"
& rstdw![référence de l'opération] & "');"
'LA LIGNE RENVOYE PAR LE DEBOGGUEUR EST CELLE CI :
OprPrec = CDbl(ResTmp)
End If
OprPrec = Arrondi(OprPrec, 2)
'update du résultat
rstdw.Edit
rstdw.Fields(rstformule!
[NomChpRes]) = OprPrec
rstdw.Update
NbLigneMAJ = NbLigneMAJ + 1
End If
'fermeture et libération espace
mémoire
rstcalcul.Close
qdfcalcul.Close
Set rstcalcul = Nothing
Set qdfcalcul = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
'MsgBox "" & NbLigneMAJ & " lignes mises
à jour !"
rstdw.Close
qdfdw.Close
Set rstdw = Nothing
Set qdfdw = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
rstformule.Close
qdfformule.Close
dbscurrent.Close
Set dbscurrent = Nothing
Set qdfformule = Nothing
Set rstformule = Nothing
MsgBox "fin"
End If
End Sub
Sinon il y a deux autres fonctions fait maison appelées
dans ce code mais je ne pense pas que ce soit utile
Merci beaucoup !-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près cequ'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
.
-----Message d'origine-----
Effectivement c'est long... ;-))
Bon j'ai refait un peu à mon goût ton code mais le pb
est que je ne peux pas
tester...
Peux-tu m'envoyer un bout de ta base en la zippant s'il
te plaît pour que je
puisse
tester ?
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" <jean@piegeacon.apinc.org> a écrit dans le
message news:
0a8501c34ab1$6bcc6510$a101280a@phx.gbl...
Oui merci, je veux bien mais c'est assez long :
Private Sub Commande15_Click()
Dim RepMsg
Dim NbApp, NbClient As Integer
RepMsg = MsgBox("Souhaitez-vous lancer la validation
mensuelle maintenant ?", 4)
If RepMsg = 6 Then
'Ouverture de la base
Dim dbscurrent As Database
Set dbscurrent = OpenDatabase(CurrentDb.Name)
'a faire ici requetes de mises à jour
'Déclaration des variables
Dim ValOpr, RetCherche, ResTmp, ValOprTmp
Dim OprPrec As Double
Dim OprPrecTmp As Double
Dim OptPrec As String
Dim bool_calc As Boolean
Dim NbLigneMAJ As Integer
'Récupération des bornes des dates
Dim qdfLimDate As QueryDef
Dim rstLimDate As Recordset
Set qdfLimDate = dbscurrent.CreateQueryDef("")
qdfLimDate.SQL = "SELECT [Date début mois], [Date
fin mois] FROM [Table des paramètres du mois] WHERE
[Impress] <> 0"
Set rstLimDate = qdfLimDate.OpenRecordset()
'Dim DateDeb, DateFin As Date
Dim Mois_Valid As Integer
With rstLimDate
'DateDeb = ![Date début mois]
'DateFin = ![Date fin mois]
Mois_Valid = Month(![Date début mois])
End With
rstLimDate.Close
qdfLimDate.Close
Set rstLimDate = Nothing
Set qdfLimDate = Nothing
'Requete des formules
Dim qdfformule As QueryDef
Set qdfformule = dbscurrent.CreateQueryDef("")
qdfformule.SQL = "SELECT * FROM [data warehouse -
Liste Formules] WHERE [Calcul] = -1;"
Dim rstformule
Set rstformule = qdfformule.OpenRecordset()
With rstformule
Do While Not .EOF
NbLigneMAJ = 0
'Requete du DW
Dim qdfdw As QueryDef
Set qdfdw = dbscurrent.CreateQueryDef("")
'qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [date de création] > #" & Format(!
[DateEffet], "dd/mm/yyyy") & "# AND [date de création] >
#" & Format(DateDeb, "dd/mm/yyyy") & "# AND [date de
création] < #" & Format(DateFin, "dd/mm/yyyy") & "#;"
qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [mois] = " & Mois_Valid & ";"
Dim rstdw As Recordset
Set rstdw = qdfdw.OpenRecordset()
With rstdw
Do While Not .EOF
bool_calc = True
OprPrec = 0
'Requete des lignes de calcul
(avec appel récursif pour les conditions)
Dim qdfcalcul As QueryDef
Set qdfcalcul =
dbscurrent.CreateQueryDef("")
qdfcalcul.SQL = "SELECT * FROM
[data warehouse - Calculs formules] WHERE [NumFormule]
= " & rstformule![NumFormule] & ";"
Dim rstcalcul As Recordset
Set rstcalcul =
qdfcalcul.OpenRecordset()
With rstcalcul
Do While Not .EOF
'on prend la valeur de
l'opérande ou la valeur du champ dont le nom est dans
opérande
If (![OprIsChp] = "O")
Then
ValOpr = rstdw.Fields
(![Operande])
Else
ValOpr = ![Operande]
End If
'on teste s'il y a des
conditions sur la ligne de calcul sur laquelle on est
If (![IndCond] = "O")
Then
ValOprTmp = ValOpr
RetCherche =
ChercheCondImbr(![NumFormule] & "L" & ![NumLigne],
ValOprTmp, dbscurrent, rstdw, "", "")
If IsNumeric
(RetCherche) Then
'elle renvoit
numérique, on met en tant qu'opérande
RetCherche =
Replace(RetCherche, ",", ".")
ValOpr =
RetCherche
Else
'elle renvoit du
texte, si c vrai on fait calcul, sinon non
If RetCherche
= "Faux" Then
bool_calc =
False
End If
End If
End If
'CALCUL
If (![NumLigne] <> 1)
Then
If bool_calc = True
Then
ValOpr = Replace
(ValOpr, ",", ".")
'MsgBox "opératio
n
: " & CDbl(ValOpr) & OptPrec & OprPrec
OprPrec =
EffectuerOpération(CDbl(ValOpr), OprPrec, OptPrec)
OprPrec = Replace
(OprPrec, ",", ".")
End If
If (![Operateur]
<> "") Then
OptPrec = !
[Operateur]
End If
Else
ValOpr = Replace
(ValOpr, ",", ".")
OprPrec = CDbl
(ValOpr)
OptPrec = !
[Operateur]
End If
.MoveNext
Loop
End With
If (bool_calc = True) Then
'condition sur résultat final
If (rstformule![IndCond]
= "O") Then
OprPrecTmp = OprPrec
ResTmp = ChercheCondImbr
("R" & rstformule![NumFormule], OprPrecTmp, dbscurrent,
rstdw, "", "")
ResTmp = Replace
(ResTmp, ",", ".")
'MsgBox "avant erreur : "
& ResTmp & " et ref : " & rstdw![référence de
l'opération]
dbscurrent.Execute "insert into [debug]([ref]) VALUES ('"
& rstdw![référence de l'opération] & "');"
'LA LIGNE RENVOYE PAR LE DEBOGGUEUR EST CELLE CI :
OprPrec = CDbl(ResTmp)
End If
OprPrec = Arrondi(OprPrec, 2)
'update du résultat
rstdw.Edit
rstdw.Fields(rstformule!
[NomChpRes]) = OprPrec
rstdw.Update
NbLigneMAJ = NbLigneMAJ + 1
End If
'fermeture et libération espace
mémoire
rstcalcul.Close
qdfcalcul.Close
Set rstcalcul = Nothing
Set qdfcalcul = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
'MsgBox "" & NbLigneMAJ & " lignes mises
à jour !"
rstdw.Close
qdfdw.Close
Set rstdw = Nothing
Set qdfdw = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
rstformule.Close
qdfformule.Close
dbscurrent.Close
Set dbscurrent = Nothing
Set qdfformule = Nothing
Set rstformule = Nothing
MsgBox "fin"
End If
End Sub
Sinon il y a deux autres fonctions fait maison appelées
dans ce code mais je ne pense pas que ce soit utile
Merci beaucoup !
-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près ce
qu'il en est...
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
.
-----Message d'origine-----
Effectivement c'est long... ;-))
Bon j'ai refait un peu à mon goût ton code mais le pb
est que je ne peux pas
tester...
Peux-tu m'envoyer un bout de ta base en la zippant s'il
te plaît pour que je
puisse
tester ?
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Jean" a écrit dans le
message news:
0a8501c34ab1$6bcc6510$
Oui merci, je veux bien mais c'est assez long :
Private Sub Commande15_Click()
Dim RepMsg
Dim NbApp, NbClient As Integer
RepMsg = MsgBox("Souhaitez-vous lancer la validation
mensuelle maintenant ?", 4)
If RepMsg = 6 Then
'Ouverture de la base
Dim dbscurrent As Database
Set dbscurrent = OpenDatabase(CurrentDb.Name)
'a faire ici requetes de mises à jour
'Déclaration des variables
Dim ValOpr, RetCherche, ResTmp, ValOprTmp
Dim OprPrec As Double
Dim OprPrecTmp As Double
Dim OptPrec As String
Dim bool_calc As Boolean
Dim NbLigneMAJ As Integer
'Récupération des bornes des dates
Dim qdfLimDate As QueryDef
Dim rstLimDate As Recordset
Set qdfLimDate = dbscurrent.CreateQueryDef("")
qdfLimDate.SQL = "SELECT [Date début mois], [Date
fin mois] FROM [Table des paramètres du mois] WHERE
[Impress] <> 0"
Set rstLimDate = qdfLimDate.OpenRecordset()
'Dim DateDeb, DateFin As Date
Dim Mois_Valid As Integer
With rstLimDate
'DateDeb = ![Date début mois]
'DateFin = ![Date fin mois]
Mois_Valid = Month(![Date début mois])
End With
rstLimDate.Close
qdfLimDate.Close
Set rstLimDate = Nothing
Set qdfLimDate = Nothing
'Requete des formules
Dim qdfformule As QueryDef
Set qdfformule = dbscurrent.CreateQueryDef("")
qdfformule.SQL = "SELECT * FROM [data warehouse -
Liste Formules] WHERE [Calcul] = -1;"
Dim rstformule
Set rstformule = qdfformule.OpenRecordset()
With rstformule
Do While Not .EOF
NbLigneMAJ = 0
'Requete du DW
Dim qdfdw As QueryDef
Set qdfdw = dbscurrent.CreateQueryDef("")
'qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [date de création] > #" & Format(!
[DateEffet], "dd/mm/yyyy") & "# AND [date de création] >
#" & Format(DateDeb, "dd/mm/yyyy") & "# AND [date de
création] < #" & Format(DateFin, "dd/mm/yyyy") & "#;"
qdfdw.SQL = "SELECT * FROM [data
warehouse] WHERE [mois] = " & Mois_Valid & ";"
Dim rstdw As Recordset
Set rstdw = qdfdw.OpenRecordset()
With rstdw
Do While Not .EOF
bool_calc = True
OprPrec = 0
'Requete des lignes de calcul
(avec appel récursif pour les conditions)
Dim qdfcalcul As QueryDef
Set qdfcalcul =
dbscurrent.CreateQueryDef("")
qdfcalcul.SQL = "SELECT * FROM
[data warehouse - Calculs formules] WHERE [NumFormule]
= " & rstformule![NumFormule] & ";"
Dim rstcalcul As Recordset
Set rstcalcul =
qdfcalcul.OpenRecordset()
With rstcalcul
Do While Not .EOF
'on prend la valeur de
l'opérande ou la valeur du champ dont le nom est dans
opérande
If (![OprIsChp] = "O")
Then
ValOpr = rstdw.Fields
(![Operande])
Else
ValOpr = ![Operande]
End If
'on teste s'il y a des
conditions sur la ligne de calcul sur laquelle on est
If (![IndCond] = "O")
Then
ValOprTmp = ValOpr
RetCherche =
ChercheCondImbr(![NumFormule] & "L" & ![NumLigne],
ValOprTmp, dbscurrent, rstdw, "", "")
If IsNumeric
(RetCherche) Then
'elle renvoit
numérique, on met en tant qu'opérande
RetCherche =
Replace(RetCherche, ",", ".")
ValOpr =
RetCherche
Else
'elle renvoit du
texte, si c vrai on fait calcul, sinon non
If RetCherche
= "Faux" Then
bool_calc =
False
End If
End If
End If
'CALCUL
If (![NumLigne] <> 1)
Then
If bool_calc = True
Then
ValOpr = Replace
(ValOpr, ",", ".")
'MsgBox "opératio
n
: " & CDbl(ValOpr) & OptPrec & OprPrec
OprPrec =
EffectuerOpération(CDbl(ValOpr), OprPrec, OptPrec)
OprPrec = Replace
(OprPrec, ",", ".")
End If
If (![Operateur]
<> "") Then
OptPrec = !
[Operateur]
End If
Else
ValOpr = Replace
(ValOpr, ",", ".")
OprPrec = CDbl
(ValOpr)
OptPrec = !
[Operateur]
End If
.MoveNext
Loop
End With
If (bool_calc = True) Then
'condition sur résultat final
If (rstformule![IndCond]
= "O") Then
OprPrecTmp = OprPrec
ResTmp = ChercheCondImbr
("R" & rstformule![NumFormule], OprPrecTmp, dbscurrent,
rstdw, "", "")
ResTmp = Replace
(ResTmp, ",", ".")
'MsgBox "avant erreur : "
& ResTmp & " et ref : " & rstdw![référence de
l'opération]
dbscurrent.Execute "insert into [debug]([ref]) VALUES ('"
& rstdw![référence de l'opération] & "');"
'LA LIGNE RENVOYE PAR LE DEBOGGUEUR EST CELLE CI :
OprPrec = CDbl(ResTmp)
End If
OprPrec = Arrondi(OprPrec, 2)
'update du résultat
rstdw.Edit
rstdw.Fields(rstformule!
[NomChpRes]) = OprPrec
rstdw.Update
NbLigneMAJ = NbLigneMAJ + 1
End If
'fermeture et libération espace
mémoire
rstcalcul.Close
qdfcalcul.Close
Set rstcalcul = Nothing
Set qdfcalcul = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
'MsgBox "" & NbLigneMAJ & " lignes mises
à jour !"
rstdw.Close
qdfdw.Close
Set rstdw = Nothing
Set qdfdw = Nothing
.MoveNext
Loop
End With
'fermeture et libération espace mémoire
rstformule.Close
qdfformule.Close
dbscurrent.Close
Set dbscurrent = Nothing
Set qdfformule = Nothing
Set rstformule = Nothing
MsgBox "fin"
End If
End Sub
Sinon il y a deux autres fonctions fait maison appelées
dans ce code mais je ne pense pas que ce soit utile
Merci beaucoup !-----Message d'origine-----
Ah !!!!!
Peux-tu nous donner ton code histoire de voir de plus
près cequ'il en est...
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
.