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 :

Heures ouvrées 8/20h ? [AC-2007]


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 109
    Par défaut Heures ouvrées 8/20h ?
    Bonjour,

    Mon activité court de 8 à 20H => 365 jours/an et mes délais d'interventions techniques contractuels sont de 4h.
    Dans ma BDD, j'ai réalisé une requête qui me calcule des délais d'interventions, moyennes...
    Les calculs sont OK tant que la date de la demande d'intervention, l'intervention elle même, les heures de début et de fin se passent le même jour.
    Dès lors, que la demande d'intervention est faite à 19h et que l'intervention à lieu le lendemain à 10h les calculs sont faux !

    Sachant que je ne maitrise pas le "code", quel pourrait être la formule d'heures ouvrées de 8 à 20h ?

    Thanks for your help !

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Salut,

    J'ai eu recours par le passé à une fonction VBA un peu du même style que la tienne, bien sur à adapter à ton cas :

    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
    Public Function HeuresOuvrees(DD As Date, DF As Date) As Integer
     
       If DateDiff("d", DD, DF) = 0 Then
     
          If (#8:00:00 AM# <= TimeValue(DD)) And (#8:00:00 PM# >= TimeValue(DF)) Then
     
             HeuresOuvrees = DateDiff("h", DD, DF)
     
          ElseIf (#8:00:00 AM# > TimeValue(DD)) And (#8:00:00 PM# <= TimeValue(DF)) Then
     
             HeuresOuvrees = 12 ' N'arrivera jamais
     
          ElseIf (#8:00:00 AM# > TimeValue(DD)) And (#8:00:00 AM# < TimeValue(DF)) Then
     
             HeuresOuvrees = DateDiff("h", #8:00:00 AM#, TimeValue(DF))
     
          ElseIf (#8:00:00 PM# > TimeValue(DD)) And (#8:00:00 PM# <= TimeValue(DF)) Then
     
             HeuresOuvrees = DateDiff("h", TimeValue(DD), #8:00:00 PM#)
     
          End If
     
       Else
     
          If TimeValue(DD) >= (#8:00:00 AM#) And TimeValue(DD) <= (#8:00:00 PM#) Then
     
             HeuresOuvrees = DateDiff("h", TimeValue(DD), #8:00:00 PM#)
     
          ElseIf TimeValue(DD) < (#8:00:00 AM#) Then
     
             HeuresOuvrees = 12 ' N'arrivera jamais
     
          End If
     
          If TimeValue(DF) >= (#8:00:00 AM#) And TimeValue(DF) <= (#8:00:00 PM#) Then
     
             HeuresOuvrees = HeuresOuvrees + DateDiff("h", #8:00:00 AM#, TimeValue(DF))
     
          ElseIf TimeValue(DF) > (#8:00:00 PM#) Then
     
             HeuresOuvrees = HeuresOuvrees + 12
     
          End If
     
       End If
     
    End Function
    J'espère que ça correspond à ta demande car je ne suis pas sur de comprendre ce que tu entend par délai d'intervention, à voir

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 109
    Par défaut
    Je n'ai pas été très explicite en effet, je reprends :

    les champs de ma table sont les suivant:
    Date_demande_d'inter / Heure_demande_inter/ Date_inter / H_Début_inter / H_Fin_inter.

    Ma requête basée sur cette table qui me sert à calculer mes délais d'interventions est la suivante:

    Délais_inter: [Heure_demande_inter]-[H_Début] <= Temps que j'ai mis pour intervenir.
    Mon calcul est juste quand tout se passe le même jour et par conséquent l'heure de demande d'inter et toujours inférieure à l'heure de début d'inter.
    Là où ça se passe pas bien c'est quand la demande d'inter est, par exemple, le 14/10 à 19h et que la date d'inter est le 15/10 à 9H.
    Dans ce cas l'Heure de demande d'inter est supérieure à l'Heure d'inter.

    Voilà mon dilemme ...

    Merci User pour ton bout de code, mais je ne suis pas calé pour l'adapter à mon cas.

    Encore merci

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Re,

    Essai de mettre ce code dans un module VBA :
    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
     
    Public Function HeuresOuvrees(DD As Date, HD As Date, DF As Date, HF As Date) As Integer
     
       If DateDiff("d", DD, DF) = 0 Then
     
          If (#8:00:00 AM# <= TimeValue(HD)) And (#8:00:00 PM# >= TimeValue(HF)) Then
     
             HeuresOuvrees = DateDiff("h", HD, HF)
     
          ElseIf (#8:00:00 AM# > TimeValue(HD)) And (#8:00:00 PM# <= TimeValue(HF)) Then
     
             HeuresOuvrees = 12 ' N'arrivera jamais
     
          ElseIf (#8:00:00 AM# > TimeValue(HD)) And (#8:00:00 AM# < TimeValue(HF)) Then
     
             HeuresOuvrees = DateDiff("h", #8:00:00 AM#, TimeValue(HF))
     
          ElseIf (#8:00:00 PM# > TimeValue(HD)) And (#8:00:00 PM# <= TimeValue(HF)) Then
     
             HeuresOuvrees = DateDiff("h", TimeValue(HD), #8:00:00 PM#)
     
          End If
     
       Else
     
          If TimeValue(HD) >= (#8:00:00 AM#) And TimeValue(HD) <= (#8:00:00 PM#) Then
     
             HeuresOuvrees = DateDiff("h", TimeValue(HD), #8:00:00 PM#)
     
          ElseIf TimeValue(HD) < (#8:00:00 AM#) Then
     
             HeuresOuvrees = 12 ' N'arrivera jamais
     
          End If
     
          If TimeValue(HF) >= (#8:00:00 AM#) And TimeValue(HF) <= (#8:00:00 PM#) Then
     
             HeuresOuvrees = HeuresOuvrees + DateDiff("h", #8:00:00 AM#, TimeValue(HF))
     
          ElseIf TimeValue(HF) > (#8:00:00 PM#) Then
     
             HeuresOuvrees = HeuresOuvrees + 12
     
          End If
     
       End If
     
    End Function
    Et après si ta table se nomme "Table1", tu appelles la fonction dans la requête comme ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table1.Date_demande_inter, Table1.Heure_demande_inter, Table1.Date_inter, Table1.H_Début_inter, HeuresOuvrees([Date_demande_inter],[Heure_demande_inter],[Date_inter],[H_Début_inter]) AS HeuresOuvrées
    FROM Table1;


    Ou plus simplement la fonction adapté à ton cas précis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function HeuresOuvrees(DD As Date, HD As Date, DF As Date, HF As Date) As Integer
     
       If DateDiff("d", DD, DF) = 0 Then
     
         HeuresOuvrees = DateDiff("h", HD, HF)
     
       Else
     
         HeuresOuvrees = DateDiff("h", TimeValue(HD), #8:00:00 PM#)
         HeuresOuvrees = HeuresOuvrees + DateDiff("h", #8:00:00 AM#, TimeValue(HF))
     
       End If
     
    End Function
    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 109
    Par défaut
    Je vais potasser tout çà et reviens vers toi...

    Merci infiniment User

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 598
    Billets dans le blog
    67
    Par défaut
    Salut,

    A noter que, dans le cas de 1/2 heures ou tranche d'heure, pour le calcul des heures tu as cette formule:
    http://www.developpez.net/forums/d11...s/#post6305302

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. fonction calcul heures ouvrées
    Par zeloutre dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/12/2011, 12h16
  2. Pb performances pendant les heures ouvrées
    Par Fouvreaux dans le forum Administration
    Réponses: 1
    Dernier message: 29/04/2009, 13h37
  3. Macro et jours/heures ouvrées
    Par BENSAISAI dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/05/2008, 13h15
  4. Calcul d'heures ouvrées
    Par kenobyalex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/04/2008, 15h06
  5. [BO 6.51] durée en jour ouvré et heure "ouvrée"
    Par aurelie83 dans le forum Deski
    Réponses: 1
    Dernier message: 12/02/2008, 18h20

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