je vous copie mon code :
<html>
<head>
<%
function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function
nbjourtot = DateDiff("d",datdeb,datfin) + 1
for i=1 to nbjourtot
if ferie(datdeb) then
nbjourtot = nbjourtot - 1
end if
datdeb=DateAdd("d",1,datdeb)
next
nbjour=nbjourtot
End function
function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote
JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)
If JJ 1 And mm 1 Then ferie = True: Exit Function '1 Janvier If JJ 1 And mm 5 Then ferie = True: Exit Function '1 Mai If JJ 8 And mm 5 Then ferie = True: Exit Function '8 Mai If JJ 14 And mm 7 Then ferie = True: Exit Function '14 Juillet If JJ 15 And mm 8 Then ferie = True: Exit Function '15 Août If JJ 1 And mm 11 Then ferie = True: Exit Function '1 Novembre If JJ 11 And mm 11 Then ferie = True: Exit Function '11 Novembre If JJ 25 And mm 12 Then ferie = True: Exit Function '25 Décembre
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30) If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques If JJ Day(Paques) And mm Month(Paques) Then ferie=true : Exit Function
Ascension = Paques + 38 'Ascension If JJ Day(Ascension) And mm Month(Ascension) Then ferie=true : Exit Function
'Pentecote = Ascension + 11 'Pentecote 'If JJ Day(Pentecote) And mm Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday) 'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function
%>
</head>
<form name="myform" method="get">
</form>
<%
dim cnt,trai,traitement
if request.querystring("date1")<>"" then
date_debut=request.querystring("date1")
date_fin=request.querystring("date2")
dim ors
dim objconn
dim strconn
set objconn = server.createobject("ADODB.connection")
strconn= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& server.mappath("../../fpdb/ti.mdb")& ";Persist Security Info=False"
objconn.open strconn
reqsql = "select * from ti;"
set ors = objconn.execute(reqsql)
do while not ors.eof
diff_debut=datediff("d",date_debut,ors("date1"))
diff_fin=datediff("d",ors("date1"),date_fin)
if (diff_debut>0 or diff_debut=0) and (diff_fin>0 or diff_fin=0) then
cnt=cnt+1
if ors("nature")<>"Circulaire" then
if ors("date4")<>"01/01/1900" then
trai=trai+1
call nbjourouvrable(ors("date2"),ors("date4"))
traitement=nbjour
response.write(ors("date2"))
response.write("
")
response.write(ors("date4"))
response.write("
")
response.write(traitement)
response.write("
")
response.write("
")
end if
end if
end if
ors.movenext
loop
end if
%>
</html>
pardon c'est un peu long....
bon je m'explique, dans ma base de donnée c'est une liste de document qui comporte differentes dates. date1 la date du document, date2 et date4 d'autres dates que je dois comparer pour recuperer le nb de jours ouvrés qui les separent. je dois faire cette comparaison pour tous les documents dont la date (date1) est comprise entre les dates du formulaires. (vous suivez toujours ??)
ca marche presque, mon probleme, et je ne comprends vraiment pas pourquoi c'est qu'il m'affiche tout ca, sauf pour la premiere ligne!! a priori sur la premiere opération la variable nbjourtot n'est pas reconnue...
isu_san
Messages postés63Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention26 juillet 2011 7 sept. 2006 à 11:12
Hello
Bon puisque ca n'a pas l'air de vous inspirer on va faire plus simple
toujours cette fonction:
function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function
nbjourtot = DateDiff("d",datdeb,datfin) + 1
for i=1 to nbjourtot
if ferie(datdeb) then
nbjourtot = nbjourtot - 1
end if
datdeb=DateAdd("d",1,datdeb)
next
nbjour=nbjourtot
End function
function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote
JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour) If JJ 1 And mm 1 Then ferie = True: Exit Function '1 Janvier If JJ 1 And mm 5 Then ferie = True: Exit Function '1 Mai If JJ 8 And mm 5 Then ferie = True: Exit Function '8 Mai If JJ 14 And mm 7 Then ferie = True: Exit Function '14 Juillet If JJ 15 And mm 8 Then ferie = True: Exit Function '15 Août If JJ 1 And mm 11 Then ferie = True: Exit Function '1 Novembre If JJ 11 And mm 11 Then ferie = True: Exit Function '11 Novembre If JJ 25 And mm 12 Then ferie = True: Exit Function '25 Décembre
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30) If Epacte 24 Then PLune PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques If JJ Day(Paques) And mm Month(Paques) Then ferie=true : Exit Function
Ascension = Paques + 38 'Ascension If JJ Day(Ascension) And mm Month(Ascension) Then ferie=true : Exit Function
'Pentecote = Ascension + 11 'Pentecote 'If JJ Day(Pentecote) And mm Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday) 'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function
ensuite plus loin je fais
call nbjourouvrable(date1,date2)
ca fonctionne
mon soucis, c'est que je dois le faire plusieurs fois avec un while et que je n'arrive pas a recuperer le resultat de la fonction dans une variable. ou et quand dois je recuperer le resultat ???