begin process at 2012 02 14 19:02:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

Débutants

 > 

Calcul jours ouvrés


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calcul jours ouvrés

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ée 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. calcul sur dates [ par ermorazor ] Bonjour, j'aurais aimé savoir comment faire pour comparer une date avec une autre date afin d'avoir un écart en nombre de jours. par exemple     (10/0


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales