Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Requête MS ACCESS formule jour ouvrable

Soleil11

XLDnaute Occasionnel
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
 

Soleil11

XLDnaute Occasionnel
Re : Requête MS ACCESS formule jour ouvrable


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

******************************************
 

chris

XLDnaute Barbatruc
Re : Requête MS ACCESS formule jour ouvrable

Bonjour

J'ai fait quelques corrections mineures dans le code (replacé le 1er dim dans la function et supprimé le 2ème) et chez moi cela fonctionne.

#Name correspond soit à une erreur de frappe, soit un module non sauvegardé...
 

Soleil11

XLDnaute Occasionnel
Re : Requête MS ACCESS formule jour ouvrable

Bonjour

J'ai fait quelques corrections mineures dans le code (replacé le 1er dim dans la function et supprimé le 2ème) et chez moi cela fonctionne.

#Name correspond soit à une erreur de frappe, soit un module non sauvegardé...

Bonjour Chris,

Vous aviez raison j'ai peut-être mal sauvé mon code, j'ai déplacé et sauver à nouveau le code dans le formulaire et maintenant cela fonctionne.

Question?

Je veux utiliser ce code dans un "report" Ms Acces en insérant les même "text box", cela ne fonctionne pas il me demande d'insérer un "parameter value" par rapport à "Opendays".

Il y a t il un moyen d'utiliser ce code à travers un "report" ?

Soleil11
 

chris

XLDnaute Barbatruc
Re : Requête MS ACCESS formule jour ouvrable

Bonjour

Pour les fonctions, il est préférable de les stocker dans un module afin de les rendre disponibles pour tous les objets.

La fonction attend des arguments (date début et date fin) : il faut donc bien les passer lors de l'utilisation.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…