Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Calcul jours ouvrés [ Divers / Débutants ] (Estelle_BNP)

mercredi 5 mars 2008 à 15:23:37 | Calcul jours ouvrés

Estelle_BNP

Bonjour,

je souhaite créer une fonction sous VBA que je puisse réutiliser dans Excel qui me permet de décaler une date de jj jours, mm mois et/ou yy années et qui m'indique la première date ouvrée qui correspond à cette date décalée.

Est-ce qu'il existe sous Excel ou VBA une fonction qui me permet de savoir si une date est un jour ouvré ou non ?
Si oui, quelle est-elle ?
Si non, pouvez-vous m'aider à construire une telle fonction ?

Merci pour votre aide ?


mercredi 5 mars 2008 à 15:38:35 | Re : Calcul jours ouvrés

vicelow5901

essaie sa ;-)



Public Function NbOuvrés&(D1, D2)

Dim Prem As Date, Der As Date, i As Date

    If D1 = D2 Then Prem = D1
            
    If TYPEJOUR(Prem) = 0 Then
    
        NbOuvrés = 1
        Exit Function
        
    End If
    
    Prem = D1
    Der = D2
    
    For i = Prem To Der
    
        NbOuvrés = NbOuvrés + (TYPEJOUR(i) = 0) * -1
        
    Next i
    
End Function


'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français


Public Function TYPEJOUR(D As Date)

'L. Longre
Dim A As Integer, t As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

    A = Year(D)
    
    If A > 2099 Then
    
        TYPEJOUR = 0
        Exit Function
        
    End If
    
    LD = Int(D)
    
    If LD <= 2 Then
    
        If LD = 1 Then
        
            TYPEJOUR = 2
            Exit Function
            
        End If
        
    End If
    
    t = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
    LP = DateSerial(A, 3, 2) + t + (t > 48) _
    + 6 - ((A + A \ 4 + t + (t > 48) + 1) Mod 7)
    
    Select Case D
    
    ' Jours fériés mobiles
    Case Is = LP, Is = LP + 38, Is = LP + 49
    
    TYPEJOUR = 2
    
    ' Jours fériés fixes
    
    Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
    Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
    Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
    Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
    
    TYPEJOUR = 2
    
    Case Else
    
    ' Samedi ou dimanche
    If Weekday(D, vbMonday) >= 6 Then
            
            TYPEJOUR = 1
            
    End If
    
    End Select

End Function




' utilistation de la fonction

NbOuvrés& (date_début, date_fin)

mercredi 5 mars 2008 à 15:41:18 | Re : Calcul jours ouvrés

vicelow5901

petite précision c'est pour calculer le nombre de jours ouvrés entre 2 date otant les les samedi, dimanche et jours férié (fixe ou variable)


mercredi 5 mars 2008 à 17:37:25 | Re : Calcul jours ouvrés

Molenn

S'il s'agit juste de calculer le nb de jours ouvrés entre deux dates, en enlevant le samedi et les jours fériés, autant utiliser directement la fonction EXCEL (qui n'est pas renseignée dans l'aide, mais qui existe bien) :

NB.JOURS.OUVRES(date_départ;date_fin;plage_jours_fériés)

Par contre, il faut peut être cocher la case Utilitaire d'analyse dans les macros complémentaires pour qu'elle fonctionne, je ne me souviens plus.

Personnellement, je préfère utiliser une fonction que je me suis faite, afin de pouvoir configurer les jours ouvrés (et oui, pour certains, le samedi est considéré ouvré et le lundi chômé par exemple ^^).
Mais elle devrait être suffisante pour répondre à ton besoin je pense.

Molenn




Cette discussion est classé dans : fonction, date, calcul, jours, ouvrés


Répondre à ce message

Sujets en rapport avec ce message

calcul de date [ par katrina ] Bonjour,je dois générer à partir d'une date de départ et d'un nombre de jours(jours de semaine:lundi au vendredi),une date de fin.Comment puis-je fair CALCUL DE DATE dans une requete [ par philseg ] bonjourcomment puis je creer une requete sous access qui me permet de compter le nombre de jours feries en faisant une comparaison entre une table co calcul du nombre de jours entre 2 date [ par oxram ] Bonjour je suis à la recherche de 2 fonctions une me calculant la différence de jours entre 2 dates et l'autre me calculant directement le nombre de s différence entre 2 date [ par arbomont ] Je cherche la fonction permettant de faire la difference des jours qu'il y a entre 2 date.exemple : 10/11/2004 - 15/12/2004 = 35 joursJe connais la fo Encore un problène avec un calcul de date... [ par Momone21 ] Bonjour,   Je cherche une fonction ou un code qui me permettrait de savoir le nombre de jours qu'il reste avant le prochain anniversaire de q calcul de jours entre deux date [ par mell01 ] bonjours,qql saurait-il calculé le nb de jour entre deux dates, soit avec une fction sql ou une fonction vba?merci d'avance Calcul du quantième d'une date [ par Pinzut77 ] Bonjour, Après quelques recherche sur google je n'ai pas trouvé de fonction pour calculer le quantième d'une date (enfin si j'en ai trouvé mais elles calendrier, jours ouvrés, temps de passage [ par ork2lAisne ] Bonjour, complétement novice, je tatonne en vb j'ai besoin d'un coup de main! je vous explique : je veux faire sous excel un petit programme qui me pe Calcul jour ouvre [ par myphilvba ] BonjourJe souhaite développer en VBA une fonction me permettant de déterminer la date du 30 eme jour ouvré (samedi compris) précédent une date donnée. [access] pb avec fonction date [ par leroi1024 ] Bonjour. J'ai un problème avec la fonction date sous access. Quand j'exécute cette ligne de code : "txtBox1.Value = "01" & Right(date,2)", j'ai le mes


Nos sponsors

Sondage...

CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,842 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.