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

Macros et VBA Excel Discussion :

Calcul de jours ouvrés avec jours fériés entre deux dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut Calcul de jours ouvrés avec jours fériés entre deux dates
    Bonjour,

    Je trouve beaucoup de choses sur ce thème mais ne me satisfait pas entièrement car il y a souvent un mélange vba et de formules.

    Je recherche la possibilité en VBA de calculer un nombre jours entre deux dates en jours ouvrés et sans jours les jours fériés (les jours fériés étant calculés)

    Merci d'avance à tous

    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour, test ça
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Sub test()
    Dim D As Date
    Dim NbJ As Long
    D = CDate("01/05/2014")
    For I = 0 To 30
        If Ferier(CLng(D)) = False Then NbJ = NbJ + 1
        D = D + 1
    Next
    MsgBox NbJ
    End Sub
     
    Function Ferier(UneDate As Long) As Boolean
    ' Par défaut la fonction ne considère pas que les Dimanche de Pâques
    ' et de Pentecôte sont fériés
    ' il suffit de renseigner l'argument DimanchesOuiNon à True à l'appel de la fonction
    ' pour les considérer comme fériés
    If Weekday(UneDate) = 1 Or Weekday(UneDate) = 7 Then Ferier = True: Exit Function
     
    Dim JFF ' table des fériés fixes (jours)
    Dim MFF ' table des fériés fixes (mois)
    JFF = Array(1, 1, 8, 14, 15, 1, 11, 25)
    MFF = Array(1, 5, 5, 7, 8, 11, 11, 12)
    Dim J As Long
    Ferier = False
    ' Recherche dans la table des jours fériés fixes
    For J = 0 To 7
    If Day(UneDate) = JFF(J) And Month(UneDate) = MFF(J) Then
    Ferier = True
    Exit Function
    End If
    Next J
    Dim FM ' contient les dates des lundis de Paques
    'FM = Array(38824, 39181, 39531, 39916, 40273, 40658, 41008, _
    '41365, 41750, 42100, 42457, 42842, _
    '43192, 43577, 43934, 44291, 44675, _
    '45026, 45383, 45768, 46118, 46475, _
    '46860, 47210, 47595)
     
    FM = Paque(Year(UneDate))
    ' Recherche si la date est un lundi de paques
    ' ou jeudi de l'ascension
    ' ou lundi de pentecôte
    'For J = 0 To 24 ' à changer si vous allez au delà de 2030
    If (UneDate = FM) Or (UneDate = FM + 39) Or (UneDate = FM + 50) Then
    Ferier = True
    Exit Function
    End If
    ' si DimanchesOuiNon est vrai
    ' on teste les dimanches de Pâques et Pentecote
     
     
    If DimanchesOuiNon Then
    If (UneDate = FM - 1) Or (UneDate = FM + 48) Then
    Ferier = True
    Exit Function
    End If
    End If
    'Next J
    End Function
    Function Paque(Annee As Integer) As Date
    Dim A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
    C = Annee - 1900
    D = C Mod 19
    E = (D * 7) + 1
    F = Int(E / 19)
    G = 11 * D - F + 4
    H = G Mod 29
    I = Int(C / 4)
    J = C - H + I + 31
    L = J Mod 7
    K = J Mod 7
    L = 25 - H - K
    M = CDate("31/03/" & Annee)
    Paque = M + L
    End Function

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut
    ouah !
    c'est pas simple

    Il n'existe pas en vba le même type que la formule NB.JOURS.OUVRES ?
    Cordialement,

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, je suppose donc que tu as lu ceci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par grimgrim Voir le message
    ouah !
    c'est pas simple

    Il n'existe pas en vba le même type que la formule NB.JOURS.OUVRES ?
    Cordialement,
    comme tu parlai de jour féries!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 166
    Points : 94
    Points
    94
    Par défaut
    pour répondre à KKI29, j'avais bien trouvé ce message

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    J'ai lu cette discussion.

    Et dans Microsoft Access comment on fait? J'ai trouvé DiffDate mais ça donne la différence entre deux dates en nombre de jours et non pas en nombre de jours ouvrés
    Merci de répondre

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La propriété WorksheetFunction de l'objet Application permet d'utiliser toutes les fonctions d'excel n'ayant pas leur équivalent dans le langage VBA.
    Ainsi la méthode NetworkDays équivaut à la fonction de feuille de calcul NB.JOURS.OUVRES
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With ActiveSheet
     .Range("D15") = Application.WorksheetFunction.NetworkDays(.Range("A15"), .Range("B15"), Range("Holidays"))
     End With
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/05/2015, 23h01
  2. Extraire le nombre des jours fériès entre deux dates
    Par b.kawsam dans le forum Salesforce.com
    Réponses: 1
    Dernier message: 28/04/2014, 01h54
  3. Réponses: 3
    Dernier message: 13/10/2011, 13h28
  4. [Toutes versions] Déterminer le nombre de jours pour chaque année fiscale, entre deux dates données
    Par mikeactuaire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/09/2011, 12h42
  5. [VBA-E]Ajouter jours ouvrés -> NB.Jours.Ouvres, Serie.Jours.Ouvres
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2007, 09h36

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