Access, calcul entre deux dates

Signaler
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007
-
Messages postés
1
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
14 février 2008
-
Bonjour;

J'ai besoin de calculer le nombre de jours entre 2 dates en excluant les jours de Week-end et les jours férié ainsi que d'autres jours. Dans excel il existe dans une macro complémentaire la fonction ci-dessous (Je pensais l'utilisée dans access, mais elle est inaccessible car protégée par un mot de passe !!!).

Peut elle être utiliser dans Access, ou existe t il un autre moyen pour arriver au même résultat ?

Fonction dans Excel : "NB.JOURS.OUVRES(date_début;date_fin;jours_fériés)"

D'avance merci.



Maxou le petit

9 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

Ok pour la réponse elle m'avait été proposée, mais je n'arrive pas à la faire fonctionner dans Access, la fonction existante dans Excel me paraissait plus accessible mon niveau dans Access.
 
Date début, date fin, base de jours férié et Hop le tour est joué !

Quelqu'un peut-il me guider pour utiliser le code proposé par JM dans Access ?

Maxou le petit
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut
En effet, le DateDiff de Access (ou de VB) n'est pas capable de calculer le nombre de jours oeuvrés (5j/sem) ou ouvrables (6j/sem).
Seule solution, faire une boucle de calcul (très difficile à mettre en oeuvre dans une requète) pour retrouver la date du premier samedi/dimanche puis en calculant le nombre de semaines complètes, je ne vois pas trop comment faire.
Je n'ai jamais été confronté au problème.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bon,

J'entrevois une solution "tirée par les cheveux"...
Like est utilisable par Access et dans les SQL

Idée :
Construire une chaîne de caractères composée des dates à exclure, de la forme suivante (exemple) :
 toto = "-01/01/2007-31/12/2006-27/08/2001-"

Seservir ensuite de Like dans ta SQL (ou titi est la date/filtre)

Private Sub Command1_Click()
 toto = "-01/01/2007-31/12/2006-27/08/2001-"
 titi = "31/12/2006"
 pasbon = "*-" & titi & "-*"
 MsgBox IIf(toto Like pasbon, "pas bon", "bon")
 titi = "31/12/2005"
 pasbon = "*-" & titi & "-*"
 MsgBox IIf(toto Like pasbon, "pas bon", "bon")
End Sub

Mais c'est vraiment tiré par les cheveux et il faudrait (si l'on ne veut pas une chaîne toto trop longue) ne réserver toto que pour les dates non ouvrables "extras" et s'y prendre autrement pour les samedis et dimanches.


S'il s'agit d'une base de données, il serait peut-être avantageux d'ajouter un champ "ouvrable" OUI/NON complétable automatiquement lors de l'enregistrement d'un article (selon le procédé indiqué plus haut pour les jours extras et autrement pour les samedis et dimanches) puis faire les requêtes en incluant ce champ dans la SQL.
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,
Regardes par ici :
http://www.vbfrance.com/infomsg_CALENDRIER-JOURS-OUVRES-TEMPS-PASSAGE_945197.aspx#12
Si ça peut t' aider .

<hr />
© -Cannes, c' est juste une histoire d' escalier.
Mais moi ce qui m' inquiète, c' est plus la montée des eaux
que la montée des marches ! .    Rolling : l' agité du bocal.
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Bonjour à tous,

Jmfmarques >> J'admire ta patience de répondre toujours à cette même question...lol..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

Bonjour à tous merci effectivement pour votre patience, Exploreur à raison.

Je n'ai pas trouvé mon bonheur pour Access, je vais fonctionner en mode dégradé avec Excel pour le moment, mais je ne desespère pas !
 
Si j'avais pu faire sous Access (Fonction ou autre) un dérivé de ma formule sous Excel comme ci-dessous c'eut été le pied !!!

$L10-$G10-ENT(($L10-MOD($L10-JUn;7)-$G10+7)/7)-ENT(($L10-MOD($L10-JDeux;7)-$G10+7)/7)-(SOMMEPROD((Fer2>$G10)-(Fer2>$L10)))+SOMMEPROD(((JOURSEM(Fer2)=JOURSEM(JUn))+(JOURSEM(Fer2)=JOURSEM(JDeux)))*(Fer2>=$L10)*(Fer2<=$L10))<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>

G10 = Date début
L10 = Date Fin
JUn = Dimanche
JDeux = Samedi
Fer2 = Liste des jours à exclure (Férié, ARTT etc...)

Si quelqu'un a une idée sous Access, je suis toujours preneur...

Merci à tous.

Maxou le petit
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,
ne comptes pas trouver dans Acces une formules prédéfinis.
d' autant plus que c' est varie .
C' est à toi de tester sur une ton champ date :
Jour Ferie ou Non
Samedi ou Pas
Dimanche ou Pas


Tu gébnères donc un champ qui prendera 0 si c' est vrai et 1 si c' est Faux.
Il ne te restes plus qu' à faire la somme pour une période donnée.
Pour les jours fériés tu dois avair une table dont la quelle tu les répértories.
Messages postés
1
Date d'inscription
mardi 12 février 2008
Statut
Membre
Dernière intervention
14 février 2008

bonjour a tous j'ai trouve une solutation pour le calcul des jours ouvrés.
Je prend en compte le lundi de pentecote et le lundi de paques, mais sa reduit le nombre de jour