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 :

Calculer le nombre de jours ouvrables entre 2 dates [AC-2007]


Sujet :

Requêtes et SQL.

  1. #21
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Viggen0020, commence par une requête plus simple pour voir où ça cloche

    ex:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     SELECT Ref_W,DateEnregistrementMSX,JourOuvres(DateEnregistrmentMSX,Date()) As [Nb jours ouvrés]
     FROM table_unique;

    Puisque tu as retiré le -1 remplace < par <= dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Loop While DateDeb < DateFin

  2. #22
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    J'ai finalement réussi en utilisant la fonction:

    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
    Public Function JourOuvres(ByVal date1 As Date, ByVal Date2 As Date) As Long
        Dim DateDeb As Date, DateFin As Date
        If IsNull(date1) Or IsNull(Date2) Then GoTo JourOuvres_Erreur
        If Not IsDate(date1) Or Not IsDate(Date2) Then GoTo JourOuvres_Erreur
        date1 = DateSerial(Year(date1), Month(date1), Day(date1))
        Date2 = DateSerial(Year(Date2), Month(Date2), Day(Date2))
        If date1 = Date2 Then GoTo JourOuvres_Erreur
        DateDeb = date1
        DateFin = Date2
        If date1 > Date2 Then
            DateDeb = Date2
            DateFin = date1
        End If
        JourOuvres = CLng(DateFin) - CLng(DateDeb)
        If JourOuvres = 0 Then Exit Function
        DateDeb = DateDeb + 1
        Do
            If (Weekday(DateDeb, vbMonday) >= 6) Or (JourFérié(DateDeb) = True) Then JourOuvres = JourOuvres - 1
            DateDeb = DateDeb + 1
        Loop While DateDeb <= DateFin
        Exit Function
    JourOuvres_Erreur:
     JourOuvres = 0
    End Function
    dans la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) AS depassement, table_unique.Ref_W, table_unique.TypeDocument, table_unique.DateEnregistrementMSX, IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]) AS [DDC1-debut], IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]) AS [DDC1-fin], IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]) AS [DDC2-debut], IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]) AS [DDC2-fin], IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]) AS [DDC3-debut], IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]) AS [DDC3-fin]
    FROM table_unique INNER JOIN type_document ON table_unique.TypeDocument = type_document.type_document
    WHERE (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))=0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))=0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))=0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))=0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))=0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))=0) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null)) OR (((table_unique.DateEnregistrementMSX)>Now()-60) AND ((IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin]))<>0) AND ((IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))<>0) AND ((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin]))<>0) AND ((table_unique.[FO-BO])="FO") AND ((table_unique.DateTraitement) Is Null))
    ORDER BY JourOuvres([DateEnregistrementMSX],Date())-[type_document]![délai]-JourOuvres((IIf([table_unique]![DDC-delai_1-fin] Is Null,0,[table_unique]![DDC-delai_1-fin])),(IIf([table_unique]![DDC-delai_1-debut] Is Null,0,[table_unique]![DDC-delai_1-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_2-fin] Is Null,0,[table_unique]![DDC-delai_2-fin])),(IIf([table_unique]![DDC-delai_2-debut] Is Null,0,[table_unique]![DDC-delai_2-debut])))-JourOuvres((IIf([table_unique]![DDC-delai_3-fin] Is Null,0,[table_unique]![DDC-delai_3-fin])),(IIf([table_unique]![DDC-delai_3-debut] Is Null,0,[table_unique]![DDC-delai_3-debut]))) DESC;

    C'est un peu indigeste mais ca fonctionne !

    Merci à tous !

    Viggen

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [AC-2007] Calculer le nombre de jours ouvrables entre 2 dates
    Par sarah12 dans le forum VBA Access
    Réponses: 7
    Dernier message: 06/05/2015, 11h30
  2. Calcul de nombre de jours ouvrable entre deux date
    Par etienneborms dans le forum Débuter
    Réponses: 6
    Dernier message: 30/01/2012, 10h53
  3. Fonction Calcul automatique de nombre de jours ouvrable entre deux dates
    Par KiMbOoO dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/04/2011, 09h23
  4. Réponses: 1
    Dernier message: 11/09/2007, 12h10
  5. [Dates] calculer le nombre de jour ouvrable entre 2 dates
    Par pimpmyride dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2006, 17h10

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