Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

NETWORKDAYS

2 réponses
Avatar
A COSTA
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

2 réponses

Avatar
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:

tonChampNombreJoursTravail=JoursOuvrés(Date_Debut, Date_fin)

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

Avatar
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:

tonChampNombreJoursTravail=JoursOuvrés(Date_Debut, Date_fin)

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