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 :

Jour ouvré sans msowcf.dll


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut Jour ouvré sans msowcf.dll
    Bonjour à tous,

    J'ai un problème déjà posé sur ce forum. J'aimerai calculé le nombre de jours entre deux dates en enlevant les jours ouvrés.
    J'ai bien vu la réponse dans la FAQ avec le code à injécté dans un module. Mais la fonction ainsi crée me renvoie "#Nom". Celon mes rechers, il s'agirait du manqué de la reference msowcf dans ma fenetre VBA

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    *EDIT*

    Il faut donc apparemment que je passe par un calendrier crée par moi meme, car cet reference et en effet absente de mon PC et je ne peux pas la telecharger.

    Question : Comment créer ce calendrier ?

    Merci d'avance

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    *Rectification*

    Je peux désormais utilize la function expliqué ici : https://www.developpez.net/forums/d9...entre-2-dates/
    (J'ai appliqué les modification Cdate etc)

    J'aimerai cependant apporté une modification, pouvoir faire en sorte que la difference entre les dates soit negatives

    Quelqu'un serait comment faire ?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    J'en suis ici niveau code mais il faut encore changé quelques lignes, ça ne fonctionne pas pour les cas ou EndDate<BegDate

    Code :

    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
    36
    37
    38
    39
    40
    Function Work_Days(BegDate As Variant, EndDate As Variant, _
                       Optional bAvecJFerie As Boolean = True) As Variant
        Dim dt As Date
     
    On Error GoTo Work_Days_Error
        If IsNull(BegDate) Or IsNull(EndDate) Then Err.Raise vbObjectError + 1
        If Not IsDate(BegDate) Or Not IsDate(EndDate) Then Err.Raise vbObjectError + 2
     
     
        dt = CDate(BegDate)
        Work_Days = 0
        If dt <= CDate(EndDate) Then
            While dt <= CDate(EndDate)
                If DatePart("w", dt, vbMonday) < 6 And IIf(bAvecJFerie, Not EstFerie(dt), True) Then
                    Work_Days = Work_Days + 1
                End If
                dt = DateAdd("d", 1, dt)
     
            Wend
     
        ElseIf dt > CDate(EndDate) Then
            While dt > CDate(EndDate)
                    If DatePart("w", dt, vbMonday) < 6 And IIf(bAvecJFerie, Not EstFerie(dt), True) Then
                        Work_Days = Work_Days - 1
                    End If
                    dt = DateAdd("d", 1, dt)
     
            Wend
        End If
        Exit Function
     
    Work_Days_Error:
        Select Case Err.NUMBER
            Case vbObjectError + 1: Work_Days = "Les 2 dates sont obligatoires."
            Case vbObjectError + 2: Work_Days = "Format de date incorrect."
            Case vbObjectError + 3: Work_Days = "La date de fin doit être postérieure à la date de début."
            Case Else: Work_Days = Err.DESCRIPTION
        End Select
     
    End Function

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    Ah c'est bon il fallait que je remplace dt = DateAdd("d", 1, dt) par dt = DateAdd("d", -1, dt).

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    La solution la plus directe est de faire un "wrapper" autours de la fonction actuelle.

    Quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function CalculerNbJourOuvreNeg(prmDate1 as variant, prmDate2 as variant) as variant
       dim result as variant:result=null
     
       if isdate(prmDate1) and isdate(prmDate2) then
             if prnDate1 < permDate2 then
                 result=Work_Days(prmDate1, prmDate2)
               else
                 result=-Work_Days(prmDate2, prmDate1)
          else
             call err.raise(5,,error$(5))
       end if
       CalculerNbJourOuvreNeg=result
    end function
    A+

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    Bon ben ce fut un plaisir de monologuer avec moi.
    En espérant que cette discussion serve à quelqu'un un jour

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/09/2007, 11h44
  2. Nbre de jours ouvrés entre deux date
    Par lito74 dans le forum Access
    Réponses: 3
    Dernier message: 08/12/2005, 09h16
  3. Comment utiliser la fonction NBR.JOURS.OUVRES?
    Par MEHCOOPER dans le forum Access
    Réponses: 9
    Dernier message: 20/10/2005, 12h50
  4. Compter le nb de jours ouvrés entre 2 dates
    Par bugmenot dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/09/2005, 13h19
  5. [Info] Jours ouvrés entre 2 dates
    Par Dinytro dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 10/08/2005, 16h05

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