OVH Cloud OVH Cloud

#erreur

2 réponses
Avatar
jos
Bonjour =E0 tous et =E0 toutes,

Je suis confront=E9 =E0 un petit probl=E8me que je n'arrive pas=20
=E0 r=E9soudre seul.

Je cherche =E0 utiliser une fonction qui me d=E9termine les=20
jours ouvr=E9s entre 2 dates.
Tout va bien jusqu'=E0 ce que la fonction tombe sur une date=20
de fin vide... ma requ=EAte renvoie "#erreur"
J'ai bien regard=E9 la fonction et celle-ci test si ma date=20
de d=E9but ou de fin est "NULL".
Si vous pouviez m'aider =E0 r=E9soudre ce probl=E8me...D'avance=20
merci.

Copie de la fonction employ=E9e :
***********************************************************
Public Function NbOpenDay(dtDeb As Date, dtFin As Date) As=20
Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourF=E9ri=E9(dtDate As Date)

Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer

If IsNull(dtDeb) Or IsNull(dtFin) Then
NbOpenDay =3D 0
Exit Function
ElseIf Not IsDate(dtDeb) =3D True Or Not IsDate(dtFin) =3D=20
True Then
NbOpenDay =3D 0
Exit Function
ElseIf dtDeb > dtFin Then
Dim dhTemp As Date
dhTemp =3D dtDeb
dtDeb =3D dtFin
dtFin =3D dhTemp
End If

dblDateDeb =3D CDbl(dtDeb)
dblDateFin =3D CDbl(dtFin)

Do Until dblDateDeb > dblDateFin
DateCourante =3D CDate(dblDateDeb)
If Weekday(DateCourante) <> 1 And _
Weekday(DateCourante) <> 7 And _
JourF=E9ri=E9(DateCourante) =3D False Then
Resultat =3D Resultat + 1
End If
dblDateDeb =3D dblDateDeb + 1
Loop
NbOpenDay =3D Resultat

End Function
***********************************************************

2 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Et voilà tu me dis que mon code est faut... je boude... ;-)))))

Bon essais de remplacer la ligne de code :

If IsNull(dtDeb) Or IsNull(dtFin) Then

par :

If IsNull(dtDeb) Or IsNull(dtFin) _
Or IsEmpty(dtDeb) Or IsEmpty(dtFin) Then

Ca marche ???

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"jos" a écrit dans le message news:
1a64801c41e02$991d5220$
Bonjour à tous et à toutes,

Je suis confronté à un petit problème que je n'arrive pas
à résoudre seul.

Je cherche à utiliser une fonction qui me détermine les
jours ouvrés entre 2 dates.
Tout va bien jusqu'à ce que la fonction tombe sur une date
de fin vide... ma requête renvoie "#erreur"
J'ai bien regardé la fonction et celle-ci test si ma date
de début ou de fin est "NULL".
Si vous pouviez m'aider à résoudre ce problème...D'avance
merci.
Avatar
www.eztree-msdn.com \(Laurent Jordi\)
Salut,

Le seul format de données qui peut être null est le variant.

Public Function NbOpenDay(dtDeb, dtFin) As Integer
if isnull(dtDeb) then
if isnull(dtFin) then
...
else
...
end if
else
if isnull(dtFin) then
...
else
...
end if
end if
...

@+

LJ
www.eztree-msdn.com


"jos" a écrit dans le message de
news:1a64801c41e02$991d5220$
Bonjour à tous et à toutes,

Je suis confronté à un petit problème que je n'arrive pas
à résoudre seul.

Je cherche à utiliser une fonction qui me détermine les
jours ouvrés entre 2 dates.
Tout va bien jusqu'à ce que la fonction tombe sur une date
de fin vide... ma requête renvoie "#erreur"
J'ai bien regardé la fonction et celle-ci test si ma date
de début ou de fin est "NULL".
Si vous pouviez m'aider à résoudre ce problème...D'avance
merci.

Copie de la fonction employée :
***********************************************************
Public Function NbOpenDay(dtDeb As Date, dtFin As Date) As
Integer
' Calculer le nombre de jours ouvrables entre deux dates
' Utilise la fonction JourFérié(dtDate As Date)

Dim dblDateDeb As Double
Dim dblDateFin As Double
Dim DateCourante As Date
Dim Resultat As Integer

If IsNull(dtDeb) Or IsNull(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf Not IsDate(dtDeb) = True Or Not IsDate(dtFin) True Then
NbOpenDay = 0
Exit Function
ElseIf dtDeb > dtFin Then
Dim dhTemp As Date
dhTemp = dtDeb
dtDeb = dtFin
dtFin = dhTemp
End If

dblDateDeb = CDbl(dtDeb)
dblDateFin = CDbl(dtFin)

Do Until dblDateDeb > dblDateFin
DateCourante = CDate(dblDateDeb)
If Weekday(DateCourante) <> 1 And _
Weekday(DateCourante) <> 7 And _
JourFérié(DateCourante) = False Then
Resultat = Resultat + 1
End If
dblDateDeb = dblDateDeb + 1
Loop
NbOpenDay = Resultat

End Function
***********************************************************