Bonjour,
J'ai besoin de calculer les jours de travail entre deux dates.
J'ai regardé sur le site
http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates
mais, étant donné que me connaissances ne vont pas assez loin, je ne sais
pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin,
et un camp pour le nombre de jours de travail.
Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ?
Merci 'avance
A Costa
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
ze Titi
Salut A COSTA !
Copie tout ce qui suit dans un module quelconque:
' --- A copier
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer Dim An As Integer Public Pâques As Date Public LundiPâques As Date Public Ascension As Date Public Pentecôte As Date Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An) a = Int(An Mod 19) b = Int(An 100) c = Int(An Mod 100) d = b 4 e = b Mod 4 f = (b + 8) 25 g = (b - f + 1) 3 h = (19 * a + b - d - g + 15) Mod 30 i = c 4 k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = (a + 11 * h + 22 * l) 451 n = (h + l - 7 * m + 114) 31 p = (h + l - 7 * m + 114) Mod 31 Pâques = DateSerial(An, n, p + 1) LundiPâques = DateAdd("d", 1, Pâques) Ascension = DateAdd("d", 39, Pâques) Pentecôte = DateAdd("d", 49, Pâques) lundiPentecôte = DateAdd("d", 50, Pâques) End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As Integer ' ' Cette fonction calcule le nombre de jours ouvrés entre deux dates ' Samedi est ouvré, Dimanche est férié ' FêtesCarillonnées Year(Date) Dim Ma_Date As Date Dim wPq As String Dim wAs As String Dim WPn As String wPq = Format(LundiPâques, "ddmm") wAs = Format(Ascension, "ddmm") WPn = Format(lundiPentecôte, "ddmm") Ma_Date = Date_Début Do Until Ma_Date > Date_Fin If Weekday(Ma_Date) <> 1 Then Select Case Format(Ma_Date, "ddmm") Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407", "1508", "0111", "1111", "2512" Case Else JoursOuvrés = JoursOuvrés + 1 End Select End If Ma_Date = Ma_Date + 1 Loop End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très généreusement gratifié du message suivant:
Bonjour, J'ai besoin de calculer les jours de travail entre deux dates. J'ai regardé sur le site http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates mais, étant donné que me connaissances ne vont pas assez loin, je ne sais pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin, et un camp pour le nombre de jours de travail. Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ? Merci 'avance A Costa
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info
Salut A COSTA !
Copie tout ce qui suit dans un module quelconque:
' --- A copier
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer
Dim An As Integer
Public Pâques As Date
Public LundiPâques As Date
Public Ascension As Date
Public Pentecôte As Date
Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An)
a = Int(An Mod 19)
b = Int(An 100)
c = Int(An Mod 100)
d = b 4
e = b Mod 4
f = (b + 8) 25
g = (b - f + 1) 3
h = (19 * a + b - d - g + 15) Mod 30
i = c 4
k = c Mod 4
l = (32 + 2 * e + 2 * i - h - k) Mod 7
m = (a + 11 * h + 22 * l) 451
n = (h + l - 7 * m + 114) 31
p = (h + l - 7 * m + 114) Mod 31
Pâques = DateSerial(An, n, p + 1)
LundiPâques = DateAdd("d", 1, Pâques)
Ascension = DateAdd("d", 39, Pâques)
Pentecôte = DateAdd("d", 49, Pâques)
lundiPentecôte = DateAdd("d", 50, Pâques)
End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As
Integer
'
' Cette fonction calcule le nombre de jours ouvrés entre deux dates
' Samedi est ouvré, Dimanche est férié
'
FêtesCarillonnées Year(Date)
Dim Ma_Date As Date
Dim wPq As String
Dim wAs As String
Dim WPn As String
wPq = Format(LundiPâques, "ddmm")
wAs = Format(Ascension, "ddmm")
WPn = Format(lundiPentecôte, "ddmm")
Ma_Date = Date_Début
Do Until Ma_Date > Date_Fin
If Weekday(Ma_Date) <> 1 Then
Select Case Format(Ma_Date, "ddmm")
Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407",
"1508", "0111", "1111", "2512"
Case Else
JoursOuvrés = JoursOuvrés + 1
End Select
End If
Ma_Date = Ma_Date + 1
Loop
End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ
Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une
procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la
fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très
généreusement gratifié du message suivant:
Bonjour,
J'ai besoin de calculer les jours de travail entre deux dates.
J'ai regardé sur le site
http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates
mais, étant donné que me connaissances ne vont pas assez loin, je ne sais
pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin,
et un camp pour le nombre de jours de travail.
Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ?
Merci 'avance
A Costa
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer Dim An As Integer Public Pâques As Date Public LundiPâques As Date Public Ascension As Date Public Pentecôte As Date Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An) a = Int(An Mod 19) b = Int(An 100) c = Int(An Mod 100) d = b 4 e = b Mod 4 f = (b + 8) 25 g = (b - f + 1) 3 h = (19 * a + b - d - g + 15) Mod 30 i = c 4 k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = (a + 11 * h + 22 * l) 451 n = (h + l - 7 * m + 114) 31 p = (h + l - 7 * m + 114) Mod 31 Pâques = DateSerial(An, n, p + 1) LundiPâques = DateAdd("d", 1, Pâques) Ascension = DateAdd("d", 39, Pâques) Pentecôte = DateAdd("d", 49, Pâques) lundiPentecôte = DateAdd("d", 50, Pâques) End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As Integer ' ' Cette fonction calcule le nombre de jours ouvrés entre deux dates ' Samedi est ouvré, Dimanche est férié ' FêtesCarillonnées Year(Date) Dim Ma_Date As Date Dim wPq As String Dim wAs As String Dim WPn As String wPq = Format(LundiPâques, "ddmm") wAs = Format(Ascension, "ddmm") WPn = Format(lundiPentecôte, "ddmm") Ma_Date = Date_Début Do Until Ma_Date > Date_Fin If Weekday(Ma_Date) <> 1 Then Select Case Format(Ma_Date, "ddmm") Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407", "1508", "0111", "1111", "2512" Case Else JoursOuvrés = JoursOuvrés + 1 End Select End If Ma_Date = Ma_Date + 1 Loop End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très généreusement gratifié du message suivant:
Bonjour, J'ai besoin de calculer les jours de travail entre deux dates. J'ai regardé sur le site http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates mais, étant donné que me connaissances ne vont pas assez loin, je ne sais pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin, et un camp pour le nombre de jours de travail. Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ? Merci 'avance A Costa
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info
A COSTA
Re-bonjour et un grand merci A Costa
Salut A COSTA !
Copie tout ce qui suit dans un module quelconque:
' --- A copier
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer Dim An As Integer Public Pâques As Date Public LundiPâques As Date Public Ascension As Date Public Pentecôte As Date Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An) a = Int(An Mod 19) b = Int(An 100) c = Int(An Mod 100) d = b 4 e = b Mod 4 f = (b + 8) 25 g = (b - f + 1) 3 h = (19 * a + b - d - g + 15) Mod 30 i = c 4 k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = (a + 11 * h + 22 * l) 451 n = (h + l - 7 * m + 114) 31 p = (h + l - 7 * m + 114) Mod 31 Pâques = DateSerial(An, n, p + 1) LundiPâques = DateAdd("d", 1, Pâques) Ascension = DateAdd("d", 39, Pâques) Pentecôte = DateAdd("d", 49, Pâques) lundiPentecôte = DateAdd("d", 50, Pâques) End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As Integer ' ' Cette fonction calcule le nombre de jours ouvrés entre deux dates ' Samedi est ouvré, Dimanche est férié ' FêtesCarillonnées Year(Date) Dim Ma_Date As Date Dim wPq As String Dim wAs As String Dim WPn As String wPq = Format(LundiPâques, "ddmm") wAs = Format(Ascension, "ddmm") WPn = Format(lundiPentecôte, "ddmm") Ma_Date = Date_Début Do Until Ma_Date > Date_Fin If Weekday(Ma_Date) <> 1 Then Select Case Format(Ma_Date, "ddmm") Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407", "1508", "0111", "1111", "2512" Case Else JoursOuvrés = JoursOuvrés + 1 End Select End If Ma_Date = Ma_Date + 1 Loop End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très généreusement gratifié du message suivant:
Bonjour, J'ai besoin de calculer les jours de travail entre deux dates. J'ai regardé sur le site http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates mais, étant donné que me connaissances ne vont pas assez loin, je ne sais pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin, et un camp pour le nombre de jours de travail. Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ? Merci 'avance A Costa
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info
Re-bonjour et un grand merci
A Costa
Salut A COSTA !
Copie tout ce qui suit dans un module quelconque:
' --- A copier
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer
Dim An As Integer
Public Pâques As Date
Public LundiPâques As Date
Public Ascension As Date
Public Pentecôte As Date
Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An)
a = Int(An Mod 19)
b = Int(An 100)
c = Int(An Mod 100)
d = b 4
e = b Mod 4
f = (b + 8) 25
g = (b - f + 1) 3
h = (19 * a + b - d - g + 15) Mod 30
i = c 4
k = c Mod 4
l = (32 + 2 * e + 2 * i - h - k) Mod 7
m = (a + 11 * h + 22 * l) 451
n = (h + l - 7 * m + 114) 31
p = (h + l - 7 * m + 114) Mod 31
Pâques = DateSerial(An, n, p + 1)
LundiPâques = DateAdd("d", 1, Pâques)
Ascension = DateAdd("d", 39, Pâques)
Pentecôte = DateAdd("d", 49, Pâques)
lundiPentecôte = DateAdd("d", 50, Pâques)
End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As
Integer
'
' Cette fonction calcule le nombre de jours ouvrés entre deux dates
' Samedi est ouvré, Dimanche est férié
'
FêtesCarillonnées Year(Date)
Dim Ma_Date As Date
Dim wPq As String
Dim wAs As String
Dim WPn As String
wPq = Format(LundiPâques, "ddmm")
wAs = Format(Ascension, "ddmm")
WPn = Format(lundiPentecôte, "ddmm")
Ma_Date = Date_Début
Do Until Ma_Date > Date_Fin
If Weekday(Ma_Date) <> 1 Then
Select Case Format(Ma_Date, "ddmm")
Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407",
"1508", "0111", "1111", "2512"
Case Else
JoursOuvrés = JoursOuvrés + 1
End Select
End If
Ma_Date = Ma_Date + 1
Loop
End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ
Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une
procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la
fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très
généreusement gratifié du message suivant:
Bonjour,
J'ai besoin de calculer les jours de travail entre deux dates.
J'ai regardé sur le site
http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates
mais, étant donné que me connaissances ne vont pas assez loin, je ne sais
pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin,
et un camp pour le nombre de jours de travail.
Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ?
Merci 'avance
A Costa
--
Cordialement,
Ze Titi
Tout pour réussir avec Access :
http://www.mpfa.info
Dim a, b, c, d, e, f, g, h, i, k, l, m, n, p As Integer Dim An As Integer Public Pâques As Date Public LundiPâques As Date Public Ascension As Date Public Pentecôte As Date Public lundiPentecôte As Date
Public Function FêtesCarillonnées(An) a = Int(An Mod 19) b = Int(An 100) c = Int(An Mod 100) d = b 4 e = b Mod 4 f = (b + 8) 25 g = (b - f + 1) 3 h = (19 * a + b - d - g + 15) Mod 30 i = c 4 k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = (a + 11 * h + 22 * l) 451 n = (h + l - 7 * m + 114) 31 p = (h + l - 7 * m + 114) Mod 31 Pâques = DateSerial(An, n, p + 1) LundiPâques = DateAdd("d", 1, Pâques) Ascension = DateAdd("d", 39, Pâques) Pentecôte = DateAdd("d", 49, Pâques) lundiPentecôte = DateAdd("d", 50, Pâques) End Function
Public Function JoursOuvrés(Date_Début As Date, Date_Fin As Date ) As Integer ' ' Cette fonction calcule le nombre de jours ouvrés entre deux dates ' Samedi est ouvré, Dimanche est férié ' FêtesCarillonnées Year(Date) Dim Ma_Date As Date Dim wPq As String Dim wAs As String Dim WPn As String wPq = Format(LundiPâques, "ddmm") wAs = Format(Ascension, "ddmm") WPn = Format(lundiPentecôte, "ddmm") Ma_Date = Date_Début Do Until Ma_Date > Date_Fin If Weekday(Ma_Date) <> 1 Then Select Case Format(Ma_Date, "ddmm") Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407", "1508", "0111", "1111", "2512" Case Else JoursOuvrés = JoursOuvrés + 1 End Select End If Ma_Date = Ma_Date + 1 Loop End Function
' --- Fin de la copie
Dans ton formulaire, dans l'évènement "Après mise à jour" de ton champ Date_fin, tu dois déclencher le calcul. Tu choisis donc de mettre une procédure évènementielle et tu mets le code suivant:
Et c'est tout. Ta fameuse fonction NETWORKDAYS est ici remplacée par la fonction JoursOuvrés
En ce jour exceptionnel du jeudi 31/05/2007, tu nous as très généreusement gratifié du message suivant:
Bonjour, J'ai besoin de calculer les jours de travail entre deux dates. J'ai regardé sur le site http://officesystem.access.free.fr/vba/jours_travailles.htm#nombre_de_jours_ouvres_entre_deux_dates mais, étant donné que me connaissances ne vont pas assez loin, je ne sais pas comment faire, dans un formulaire avec les champs Date_Debut et Date_Fin, et un camp pour le nombre de jours de travail. Est-ce qu'il y a une fonction équivalente à NETWORKDAYS d'Excel ? Merci 'avance A Costa
-- Cordialement, Ze Titi
Tout pour réussir avec Access : http://www.mpfa.info