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

Access Discussion :

[Access 2000] Calcul jours ouvrés dans un champ de formulaire


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 10
    Points : 11
    Points
    11
    Par défaut [Access 2000] Calcul jours ouvrés dans un champ de formulaire
    Bonjour à tous

    J explique mon problème dans un formulaire (Information formations) j'ai les champs suivants :

    datedébutstage1, datedinstage1,Totalheuresstages1
    datedébutstage2, datedinstage2,Totalheuresstages2
    datedébutstage3, datedinstage3Totalheuresstages3

    Ma question reste simple pour les professionnels d'access, je désirerais la différence EN HEURE entre datedébutstage1 et datefinstage1 OTER DU SAMEDI ET DIMANCHE MAIS AVEC LES JOURS FERIES le résultat figurera automatiquement dans le champ Totalheuresstages1.

    Si un des professionnels, me donne un module, pourrait il me décrire comment le faire appeler dans le formulaire car j'ai trouvé un code mais celui ci est une fonction et je ne sais pas comment la faire appeler dans le formulaire plus précisemment dois je le mettre AVANT MAJ, ou APRES MAJ ET SUR QUEL CHAMP.

    Je sais certain vont rigoler mais que voulez vous il faut bien débuter un jour

    Merci par avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 3 419
    Points : 4 227
    Points
    4 227
    Par défaut
    sur la base de combien d'heures par jour ?
    avec toutes les journées pleines ?
    Elle est pas belle la vie ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 10
    Points : 11
    Points
    11
    Par défaut [ACCESS 2000] Calcul nbre d'heures ouvrés avec et sans jours fériés
    Bonjour et merci de m'avoir répondu aussi rapidement

    les calculs se font sur la base journalière de 7 heures

    sinon mon formulaire a un peu changer maintenant il me faudrait 2 codes 1 avec les jours fériés et le deuxième sans les jours fériés voila c tout

    Merci encore

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Bonjour,

    En alternative de la fonction de Random qui risque d'être mieux que la mienne , je te propose celle-ci, l'ensemble à coller dans un module standard :

    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
    76
    77
    78
    79
    80
     
    Public Enum eTypesJourFerie
       Seulement_les_WeekEnds
       Fetes_et_WeekEnds
    End Enum
     
    Private Type tJoursFete
       sLundiPaques As String
       sAscension As String
       sLundiPentecote As String
       iAnnee As Integer
    End Type
     
    Dim tFetes As tJoursFete
     
    ' Compte le nombre de Samedi/Dimanche et éventuellement les jours fériés entre 2 dates incluses
    ' Ascension, lundi de Pâques, Lundi de Pentecôte, 1er janvier, 1er mai, 8 mai
    ' 14 juillet, 15 aout, 1er novembre, 11 novembre, 25 décembre
    Public Function CompteHeuresTravaillees(dDateInitiale As Date, dDateFinale As Date, _
       Optional eTypeJourFerie As eTypesJourFerie = eTypesJourFerie.Seulement_les_WeekEnds, _
       Optional dNbHeuresJournalieres As Double = 7) As Single
     
       Dim dTmp As Date
       Dim iCompteJoursFeries As Integer
       Dim bIsJourFerie As Boolean
     
       If dDateInitiale > dDateFinale Then
          dTmp = dDateInitiale
          dDateInitiale = dDateFinale
          dDateFinale = dDateInitiale
       End If
     
       For dTmp = dDateInitiale To dDateFinale
          Select Case Weekday(dTmp)
             Case vbSunday, vbSaturday
                bIsJourFerie = True
             Case Else
                bIsJourFerie = False
          End Select
          If Not bIsJourFerie And _
             eTypeJourFerie = eTypesJourFerie.Fetes_et_WeekEnds Then
             If tFetes.iAnnee <> Year(dTmp) Then
                SetJoursDeFete (Year(dTmp))
             End If
             Select Case Format(dTmp, "ddmm")
                Case tFetes.sAscension, tFetes.sLundiPaques, tFetes.sLundiPentecote, "0101", _
                     "0105", "0805", "1407", "1508", "0111", "1111", "2512"
                   bIsJourFerie = True
             End Select
          End If
          If bIsJourFerie Then iCompteJoursFeries = iCompteJoursFeries + 1
       Next dTmp
       CompteHeuresTravaillees = (DateDiff("d", dDateInitiale, dDateFinale + 1) - iCompteJoursFeries) * _
                                 dNbHeuresJournalieres
    End Function
     
    Private Sub SetJoursDeFete(iAn As Integer)
       Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
       Dim f As Integer, g As Integer, h As Integer, i As Integer, k As Integer
       Dim l As Integer, m As Integer, n As Integer, p As Integer
       Dim dPaques As Date
       a = Int(iAn Mod 19)
       b = Int(iAn \ 100)
       c = Int(iAn Mod 100)
       d = b \ 4
       e = b Mod 4
       f = (b + 8) \ 25
       g = (b - f + 1) \ 3
       h = (19 * a + b - d - g + 15) Mod 30
       i = c \ 4
       k = c Mod 4
       l = (32 + 2 * e + 2 * i - h - k) Mod 7
       m = (a + 11 * h + 22 * l) \ 451
       n = (h + l - 7 * m + 114) \ 31
       p = (h + l - 7 * m + 114) Mod 31
       dPaques = DateSerial(iAn, n, p + 1)
       tFetes.sLundiPaques = Format(DateAdd("d", 1, dPaques), "ddmm")
       tFetes.sAscension = Format(DateAdd("d", 39, dPaques), "ddmm")
       tFetes.sLundiPentecote = Format(DateAdd("d", 50, dPaques), "ddmm")
    End Sub
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ' Pour enlever seulement les week-ends et heures journalières = 7
    MsgBox CompteHeuresTravaillees(#10/15/2003#, #11/22/2006#)
     
    ' Pour enlever fêtes (pentecôte compris !) et week-ends, et heures journalière = 6 (lorsqu'on sera à 30 heures par semaine !)
    MsgBox CompteHeuresTravaillees(#10/15/2003#, #11/22/2006#, Fetes_et_WeekEnds, 6)
    Cette fonction renvoie un type single c'est à dire un chiffre à virgule flottante exprimant le nombre d'heures travaillées.

    La fonction compte les heures de présence, et les heures à surveiller la machine à café ne sont pas déduites (hum!).

    Philippe

    FAQ : Y'avait déjà cette base de travail (Y'a tout dans la FAQ !) : http://access.developpez.com/faq/?pa...nip#NbJourOuvr

  5. #5
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 479
    Points : 570
    Points
    570
    Par défaut
    salut,

    Citation Envoyé par davidlemp
    Je sais certain vont rigoler mais que voulez vous il faut bien débuter un jour
    es-tu sur d'être débutant en Access ?

    bon on se connait pas.

    heu moi pour répondre à cette question je dirais simplement qu'avec une recherche avancée sur le forum Access ou VB tu trouveras ce que tu cherches. bonne prog !

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    Petogaz a écrit :
    heu moi pour répondre à cette question je dirais simplement qu'avec une recherche avancées sur le forum Access ou VB tu trouveras ce que tu cherches. bonne prog !
    Ben oui, j'ai mis le lien au dessus, j'ai vu qu'après...

    Philippe

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 10
    Points : 11
    Points
    11
    Par défaut

    Pour répondre à ta question petogaz, non je ne débute pas sur ACCESS, mais la je suis entrain de créer une application qui me dépasse un peu, car le but de cette application est de gérer entièrement un centre de formation et j'ai toujours eu un peu de mal avec les dates et jours fériés. celui ci commence à prendre forme, mais j'ai encore pas mal de boulot. et le vba est pas vraiment ma tasse de thé et le temps me manque un peu, je n'ai pas le temps de rechercher dans le FAQ car j'y passerai la journée entière et mes stagiaires ne seraient pas vraiment d'accord. Voila sinon merci pour ton code philben, mais j ai juste un souci je ne désire pas qu'il m'envoit un msgbox je voudrais que le calcul s'affiche automatiquement une fois insérer les dates d'entrée et de fin dans le formulaire dans le champ totalheuresstages.

    Merci par avance les experts, éprouvés, confirmés et bien sur les débutants

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2005
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Resolu
    Merci à vous ca marche !

    pour les débutants qui reprendront ce code n'oubliés pas de changer les heures journalières par 7 et non 6, eh oui je me suis tracasser la tête pendant 30 min quand soudain une illumination je n'avais pas tout lu le message de philben qui à envie de travailler 30 h par semaine mais ne rêve pas c pas demain la veille au contraire il va falloir que tu paye ma retraite donc plus d heures de boulot pour toi.

    Merci beaucoup a philben, random, et petogaz.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/05/2008, 19h13
  2. Réponses: 10
    Dernier message: 02/03/2007, 12h17
  3. [Oracle] Calcul Jours Ouvrés
    Par Mimile28 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/10/2006, 15h31
  4. Réponses: 3
    Dernier message: 11/09/2006, 14h25
  5. [Access] nombre de jours ouvrés
    Par shinobi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/06/2006, 11h18

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