J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les
valeurs à traiter dans mon formulaire sont date1=05/05/2004 et
date2=06/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click()
Dim Jours As New RS_Temps
Dim nbj As Integer
nbj = Jours.JoursOuvrables(date1, date2)
End Sub
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
Jessy Sempere [MVP]
Bonjour
Je ne connais pas la solution de notre ami Raymond, mais à défaut, tu peux essayer le code qui suit, il te suffit de le copier dans un module standard de la base de donnée et ensuite d'appeler la fonction :
-NbOpenDay()
*************************************************** Public Function fPaques(wAn%) As Date 'Pâques est le dimanche qui suit le quatorzième jour de la 'Lune qui tombe le 21 mars ou immédiatement après
Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH% Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%
wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19 ans wB = wAn 100 'Calcul du siècle wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle wD = wB 4 wE = wB Mod 4 wF = (wB + 8) 25 wG = (wB - wF + 1) 3 wH = (19 * wA + wB - wD - wG + 15) Mod 30 wI = wC 4 wK = wC Mod 4 wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7 wM = (wA + 11 * wH + 22 * wL) 451 wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour
Public Function JourFérié(dtDate As Date) As Boolean
Dim dtPaques As Date dtPaques = fPaques(Year(dtDate)) Select Case dtDate Case CDate("01/01/" & Year(dtDate)) 'Jour de l'an JourFérié = True Case CDate("01/05/" & Year(dtDate)) 'Fête du travail JourFérié = True Case CDate("08/05/" & Year(dtDate)) 'Victoire de 1945 JourFérié = True Case CDate("14/07/" & Year(dtDate)) 'Fête nationale JourFérié = True Case CDate("15/08/" & Year(dtDate)) 'Assomption JourFérié = True Case CDate("01/11/" & Year(dtDate)) 'Toussaint JourFérié = True Case CDate("11/11/" & Year(dtDate)) 'Armistie 1918 JourFérié = True Case CDate("25/12/" & Year(dtDate)) 'Noël JourFérié = True Case dtPaques + 1 'Lundi de Pâques JourFérié = True Case dtPaques + 39 'Ascension JourFérié = True Case dtPaques + 50 'Lundi de pentcôte JourFérié = True Case Else JourFérié = False End Select
End Function
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) _ Or IsEmpty(dtDeb) Or IsEmpty(dtFin) Then NbOpenDay = 0 Exit Function ElseIf Not IsDate(dtDeb) Or Not IsDate(dtFin) 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 ***************************************************
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Jeff" a écrit dans le message news: c7fhil$ig5$
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub
Rien ne se passe. Merci pour votre aide.
Bonjour
Je ne connais pas la solution de notre ami Raymond, mais à défaut,
tu peux essayer le code qui suit, il te suffit de le copier dans un
module standard de la base de donnée et ensuite d'appeler la fonction :
-NbOpenDay()
***************************************************
Public Function fPaques(wAn%) As Date
'Pâques est le dimanche qui suit le quatorzième jour de la
'Lune qui tombe le 21 mars ou immédiatement après
Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH%
Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%
wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19
ans
wB = wAn 100 'Calcul du siècle
wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle
wD = wB 4
wE = wB Mod 4
wF = (wB + 8) 25
wG = (wB - wF + 1) 3
wH = (19 * wA + wB - wD - wG + 15) Mod 30
wI = wC 4
wK = wC Mod 4
wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7
wM = (wA + 11 * wH + 22 * wL) 451
wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois
wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour
Public Function JourFérié(dtDate As Date) As Boolean
Dim dtPaques As Date
dtPaques = fPaques(Year(dtDate))
Select Case dtDate
Case CDate("01/01/" & Year(dtDate)) 'Jour de l'an
JourFérié = True
Case CDate("01/05/" & Year(dtDate)) 'Fête du travail
JourFérié = True
Case CDate("08/05/" & Year(dtDate)) 'Victoire de 1945
JourFérié = True
Case CDate("14/07/" & Year(dtDate)) 'Fête nationale
JourFérié = True
Case CDate("15/08/" & Year(dtDate)) 'Assomption
JourFérié = True
Case CDate("01/11/" & Year(dtDate)) 'Toussaint
JourFérié = True
Case CDate("11/11/" & Year(dtDate)) 'Armistie 1918
JourFérié = True
Case CDate("25/12/" & Year(dtDate)) 'Noël
JourFérié = True
Case dtPaques + 1 'Lundi de Pâques
JourFérié = True
Case dtPaques + 39 'Ascension
JourFérié = True
Case dtPaques + 50 'Lundi de pentcôte
JourFérié = True
Case Else
JourFérié = False
End Select
End Function
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) _
Or IsEmpty(dtDeb) Or IsEmpty(dtFin) Then
NbOpenDay = 0
Exit Function
ElseIf Not IsDate(dtDeb) Or Not IsDate(dtFin) 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
***************************************************
--
@+
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/
------------------------------------
"Jeff" <administration.herphelin@pi.be> a écrit dans le message news:
c7fhil$ig5$1@reader08.wxs.nl...
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne
parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les
valeurs à traiter dans mon formulaire sont date1/05/2004 et
date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click()
Dim Jours As New RS_Temps
Dim nbj As Integer
nbj = Jours.JoursOuvrables(date1, date2)
End Sub
Je ne connais pas la solution de notre ami Raymond, mais à défaut, tu peux essayer le code qui suit, il te suffit de le copier dans un module standard de la base de donnée et ensuite d'appeler la fonction :
-NbOpenDay()
*************************************************** Public Function fPaques(wAn%) As Date 'Pâques est le dimanche qui suit le quatorzième jour de la 'Lune qui tombe le 21 mars ou immédiatement après
Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH% Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP%
wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19 ans wB = wAn 100 'Calcul du siècle wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle wD = wB 4 wE = wB Mod 4 wF = (wB + 8) 25 wG = (wB - wF + 1) 3 wH = (19 * wA + wB - wD - wG + 15) Mod 30 wI = wC 4 wK = wC Mod 4 wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7 wM = (wA + 11 * wH + 22 * wL) 451 wN = (wH + wL - 7 * wM + 114) 31 'détermine le mois wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour
Public Function JourFérié(dtDate As Date) As Boolean
Dim dtPaques As Date dtPaques = fPaques(Year(dtDate)) Select Case dtDate Case CDate("01/01/" & Year(dtDate)) 'Jour de l'an JourFérié = True Case CDate("01/05/" & Year(dtDate)) 'Fête du travail JourFérié = True Case CDate("08/05/" & Year(dtDate)) 'Victoire de 1945 JourFérié = True Case CDate("14/07/" & Year(dtDate)) 'Fête nationale JourFérié = True Case CDate("15/08/" & Year(dtDate)) 'Assomption JourFérié = True Case CDate("01/11/" & Year(dtDate)) 'Toussaint JourFérié = True Case CDate("11/11/" & Year(dtDate)) 'Armistie 1918 JourFérié = True Case CDate("25/12/" & Year(dtDate)) 'Noël JourFérié = True Case dtPaques + 1 'Lundi de Pâques JourFérié = True Case dtPaques + 39 'Ascension JourFérié = True Case dtPaques + 50 'Lundi de pentcôte JourFérié = True Case Else JourFérié = False End Select
End Function
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) _ Or IsEmpty(dtDeb) Or IsEmpty(dtFin) Then NbOpenDay = 0 Exit Function ElseIf Not IsDate(dtDeb) Or Not IsDate(dtFin) 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 ***************************************************
-- @+ Jessy Sempere - Access MVP
------------------------------------ Site @ccess : http://access.jessy.free.fr/ Pour l'efficacité de tous : http://users.skynet.be/mpfa/ ------------------------------------ "Jeff" a écrit dans le message news: c7fhil$ig5$
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub
Rien ne se passe. Merci pour votre aide.
Raymond [mvp]
Bonjour Jeff.
je te fais des misères ?
je viens de tester avec la dll en téléchargement et ça fonctionne (dates françaises dans un contrôle de formulaire ou variable) modifie le test comme ceci: Dim Jours As New RS_Temps MsgBox Jours.JoursOuvrables(Me.Madate, Me.Ladate) tu indiques 06/05/2004 dans madate tu indiques 09/05/2004 dans ladate le msgbox doit afficher 2 -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jeff" a écrit dans le message de news:c7fhil$ig5$
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub
Rien ne se passe. Merci pour votre aide.
Bonjour Jeff.
je te fais des misères ?
je viens de tester avec la dll en téléchargement et ça fonctionne (dates
françaises dans un contrôle de formulaire ou variable)
modifie le test comme ceci:
Dim Jours As New RS_Temps
MsgBox Jours.JoursOuvrables(Me.Madate, Me.Ladate)
tu indiques 06/05/2004 dans madate
tu indiques 09/05/2004 dans ladate
le msgbox doit afficher 2
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jeff" <administration.herphelin@pi.be> a écrit dans le message de
news:c7fhil$ig5$1@reader08.wxs.nl...
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne
parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les
valeurs à traiter dans mon formulaire sont date1/05/2004 et
date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click()
Dim Jours As New RS_Temps
Dim nbj As Integer
nbj = Jours.JoursOuvrables(date1, date2)
End Sub
je viens de tester avec la dll en téléchargement et ça fonctionne (dates françaises dans un contrôle de formulaire ou variable) modifie le test comme ceci: Dim Jours As New RS_Temps MsgBox Jours.JoursOuvrables(Me.Madate, Me.Ladate) tu indiques 06/05/2004 dans madate tu indiques 09/05/2004 dans ladate le msgbox doit afficher 2 -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Jeff" a écrit dans le message de news:c7fhil$ig5$
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub
Rien ne se passe. Merci pour votre aide.
Jeff
Merci
Je devais simplement remplacer nbj = Jours.JoursOuvrables(date1, date2) par me.nbj = Jours.JoursOuvrables(date1, date2)
tellement gros que je l'avais pas vu 1000000 excuses et merci à tous.
"Jeff" a écrit dans le message de news:c7fhil$ig5$
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub
Rien ne se passe. Merci pour votre aide.
Merci
Je devais simplement remplacer
nbj = Jours.JoursOuvrables(date1, date2)
par
me.nbj = Jours.JoursOuvrables(date1, date2)
tellement gros que je l'avais pas vu 1000000 excuses et merci à tous.
"Jeff" <administration.herphelin@pi.be> a écrit dans le message de
news:c7fhil$ig5$1@reader08.wxs.nl...
Bonjour à tous,
J'ai trouvé à l'adresse ci-dessous ce qui devrait m'aider mais je ne
parviens pas à l'utiliser.
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les
valeurs à traiter dans mon formulaire sont date1/05/2004 et
date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click()
Dim Jours As New RS_Temps
Dim nbj As Integer
nbj = Jours.JoursOuvrables(date1, date2)
End Sub
J'ai ajouté la référence dans VB Editor et repris le code ci-dessous. Les valeurs à traiter dans mon formulaire sont date1/05/2004 et date2/06/2004 (pour tester et éviter les problèmes du type dateus).
Private Sub Commande7_Click() Dim Jours As New RS_Temps Dim nbj As Integer nbj = Jours.JoursOuvrables(date1, date2) End Sub