Re : Requête MS ACCESS formule jour ouvrable
Bonjour,
J'ai une requête avec des champs dates et la dernière colonne qui me calcule le nbre jours entre deux date et j'utilise la formule suivante, datediff("Y",[date1],[date2]).
Comment puis-je modifier cette formule afin qu'il me retourne la différence du nbre de jours entre ces deux dates mais en tenant compte que des jours ouvrables du lundi au vendredi.
Merci pour votre aide.
Soleil11
Bonjour,
J'ai peut-être trouvé la solution à mon problème en utilisant le code ci-dessous, mais cela ne marche que sur Excell. Avec MS Acces lorsque j'utilise ce code j'ai le message suivant :
#Name?. J'ai réaliser mon test à travers un formulaire en insérant 3 "text box" :
1. [date1]
2. [date2]
3. [résultat]
dans le 3ème box j'ai inséré le la fonction
=Opendays([date1],[date2]) et ci-dessous le code en ralation avec ma formule.
Pourriez-vous m'aider à y voir plus clair. Pourquoi cela fonctionne sur Excell et non sur MS ACCESS ?
Merci d'avance.
Soleil
****************************************
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 Opendays(Date_Début As Date, Date_Fin As Date) As Integer
'
' Cette fonction calcule le nombre de jours ouvrables entre deux dates
' Samedi n'est pas ouvrable, 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
Select Case Weekday(Ma_Date)
Case 2, 3, 4, 5, 6
Select Case Format(Ma_Date, "ddmm")
Case Is = wPq, wAs, WPn, "0101", "0105", "0805", "1407", "1508", "0111", "1111", "2512"
Case Else
Opendays = Opendays + 1
End Select
End Select
Ma_Date = Ma_Date + 1
Loop
End Function
******************************************