IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

requête date Access et jours ouvrés [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut requête date Access et jours ouvrés
    Bonsoir,

    J'utilise une requête de sélection sur Access qui me permet de piocher des informations dans notre base de donnée dans le but de collecter des statistiques de rendement, performance etc..
    J'utilise toujours le critère date qui me permet donc d'avoir les données de la vieille, sauf que le lundi -1 = Dimanche, ça ne colle pas trop vous l'aurais compris.

    Je cherche donc que mon critère ne soit appliqué que pour les jours ouvrés du lundi au vendredi.
    Comment pourrai-je faire pour indiquer à Access de faire cela ?
    Si vous avez un début de piste ou encore mieux la solution je suis preneuse.

    Merci d'avance chers internautes.

    Cordialement,

  2. #2
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Salut
    Remplacez votre critère par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(JourSem(Date()-1;2)=6;Date()-1;VraiFaux(JourSem(Date()-1;2)=7;Date()-2;Date()-1))

  3. #3
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut Re:
    Bonjour,

    J'ai essayé le code que vous m'avez fourni mais je n’obtiens pas le résultat escompté, j'ai mis votre code dans le champ "critère" de mon champ date en remplacement de mon critère "Date()-1"
    J'ai un enregistrement daté au 31/01/2020 qui aurait du normalement s'afficher étant donné que le dernier jour ouvré est le vendredi 31/01/2020.

    Vous auriez une idée de ce qui pourrait causer cette anomalie ?

    Cordialement,

  4. #4
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    essayez plus tôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(JourSem(Date();2)=6;Date()-1;VraiFaux(JourSem(Date();2)=7;Date()-2;Date()))

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Salut.

    Voici une formule qui te donne la veille de la date courante qui tombe un mardi, mercredi, jeudi ou vendredi, et le vendredi qui précède lorsqu'elle tombe un lundi, samedi ou dimanche

    Code access : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(JourSem(Date();7)<4;Date()-JourSem(Date();7);Date()-1)



    Citation Envoyé par hyperion13 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(JourSem(Date();2)=6;Date()-1;VraiFaux(JourSem(Date();2)=7;Date()-2;Date()))
    Il manque le -1 à la fin de ta formule... Et comme ta première solution, elle ne gère pas bien le lundi.

  6. #6
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,

    À vrai dire j'ai constaté que ça ne fonctionnais pas, Je n'avais pas l'enregistrement daté au vendredi alors que j'avais exécutée la requête un dimanche. Je vais réessayer avec les formules que vous m'avais partagez, j'ai l'embarras du choix maintenant 😎

    Cordialement,

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Il faut noter qu'en utilisant Date(), ça va être recalculé en fonction de la date courante, donc ça va être modifié tous les jours... que cherches-tu à réaliser? à obtenir la date de la veille par rapport à la date d'une action?

  8. #8
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Supposons que nous soyons lundi matin, en buvant le premier café au boulot je lance ma requête... qui a comme critère date()-1.

    Access va me donner un résultat nul car pour dimanche aucune donnée ne correspondra à ma requête,

    C'est pour cela que je cherchais une solution qui indiquerais à ma requête d'aller chercher "la vieille en jours ouvré" soit vendredi.

    Mon critère date()-1 est bon pour le reste de la semaine mais pas le lundi car lundi -1 = dimanche.

  9. #9
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Dans un exemple concret, Je veux sortir toutes les ventes réalisées durant la journée de vendredi, Hors nous somme lundi matin. Mon critère actuel est d'allez chercher les ventes de la veille avec date()-1

    Je veut que la requêtes ne prenne pas en compte les week-end. Mon critère doit donc correspondre aux jours ouvrés car aucunes vente pour samedi et dimanche.

    Le lundi faut allez chercher les ventes de vendredi...

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Ok. Alors, nous nous sommes bien compris, et ma solution fonctionne...

  11. #11
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Très bien, j'ai sûrement fait une erreur quelques part alors... Je vais réessayer des que possible.

    Merci pour vos retours.

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Marionette Voir le message
    [...]j'ai l'embarras du choix maintenant 😎[...]
    Pas tant que ça... J'ai dit une bêtise par rapport aux solutions d'hypérion (j'ai édité mes messages depuis ^^), car ses solutions ne gèrent pas bien le lundi...

  13. #13
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    C'est noté je vous en dirais des nouvelles après test...

    Cordialement

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonsoir,
    et quand est-il des jours fériés ?

  15. #15
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    En effet il serait bien que ca puissent aussi gérer les jours fériés, possible d'intégrer cela dans la formule ? Ou il faudrait avoir un tableau des jours fériés ?

    Cordialement

  16. #16
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonjour
    ce n'est pas simple à mettre en place car il faut tenir compte aussi des jours non travaillés (ponts, fermeture annuelle de l'entreprise ...). La fonction EstFerie() ne donne que les jours fériés légaux, il va donc falloir tenir compte de tout cela ...

  17. #17
    Membre du Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2019
    Messages : 196
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,

    Si les jours fériés légaux sont pris en compte c'est déjà bien je pense, pour ce qui es des jours de fermeture de mon entreprise, bien souvent ça précède un jour férié, donc on serait vraiment pas mal à quelques exception près, comment dois-je m'y prendre pour intégrer également les jours férié ? Je suppose que je dois oublier ma requête et aller tatoner du VBA ?

  18. #18
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    comment dois-je m'y prendre pour intégrer également les jours férié ?
    il faut créer une table des jours chômés qui contiendra les jours non travaillés qui ne sont pas les jours fériés nationaux: en gros les ponts et les jours de fermeture s'il y en a
    Je suppose que je dois oublier ma requête et aller tatoner du VBA ?
    une fonction peut être utilisée dans une requête et on peut t'aider à la mise en place du code VBA.
    la fonction EstFerie() existe déjà ici inclus la fonction de calcul du Lundi de pâques, il est possible de créer une fonction EstChome() qui regarde si la date est dans la table des jours chômés de l'entreprise:
    en partant du pré-requis qu'une table tbl_jours_chomes existe et contient les champs suivants:

    - Numéro Auto - la clé primaire
    dtChomee
    - Date - une date valide

    elle peut contenir, par exemple, le lundi 13/07/2020 (veille du 14 juillet) ou le vendredi 22/05/2020 (lendemain de l'Ascension)

    le code vérifie si la date passée en paramètre existe dans la table des jours chômés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function EstChome(ByVal QuelleDate As Date) As Boolean
    ' recherche des jours chômés de l'entreprise
    Dim oRst As Recordset
    Set oRst = CurrentDb.OpenRecordset("[tbl_jours_chomes]", dbOpenSnapshot)
     
    For i = 0 To oRst.RecordCount - 1
        ' si une date correspond, on renvoie Vrai à la fonction et on sort de la boucle
        If QuelleDate = oRst("dtchomee") Then
            EstChome = True
            Exit For
        End If
    Next
     
    End Function
    Ces 2 fonctions seront utilisées dans une troisième: ProchainJourOuvre() qui renverra le premier jour ouvré de la date passée en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Function ProchainJourOuvre(ByVal QuelleDate As Date) As Date
    ' Recherche du jour ouvré le plus proche par rapport à une date
    Dim boEstFerie As Boolean
    Dim boEstChome As Boolean
    Dim boEstWeekEnd As Boolean
    Dim boEstFini As Boolean
    Dim dtDateTrav As Date
     
    dtDateTrav = QuelleDate
     
    Do Until boEstFini
        ' on trouve la date de la veille
        dtDateTrav = DateAdd("d", -1, dtDateTrav)
     
        ' on vérifie si la date est un samedi ou un dimanche
        boEstWeekEnd = (Weekday(dtDateTrav) = 1 Or Weekday(dtDateTrav) = 7)
     
        ' ou si c'est un jour férié national
        boEstFerie = EstFerie(dtDateTrav)
     
        ' sinon on regarde dans les jours chômés de l'entreprise
        boEstChome = EstChome(dtDateTrav)
     
        ' si au moins une des 3 condition est vraie, on continue, sinon on arrête la boucle
        If boEstWeekEnd Or boEstFerie Or boEstChome Then
            boEstFini = False
        Else
            boEstFini = True
        End If
    Loop
     
    ' on renvoie la dernière date trouvée à la fonction
    ProchainJourOuvre = dtDateTrav
     
    End Function
    C'est cette dernière fonction qui pourra être utilisée dans une requête.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] Augmenter une date de 2 jours ouvrés
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2010, 13h54
  2. calcul date à partir des jours ouvrés
    Par michel13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2008, 20h18
  3. Requête calcul délai en jours ouvrés
    Par Boubas1 dans le forum IHM
    Réponses: 4
    Dernier message: 21/05/2008, 22h22
  4. Calcul des dates et des jours ouvrés
    Par okparanoid dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2007, 16h50
  5. [Dates] Nombre de jours ouvrés entre deux date
    Par meufeu dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2007, 17h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo