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

VBA Access Discussion :

Calcul du temps écoulé en fonction du calendrier


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Calcul du temps écoulé en fonction du calendrier
    Bonjour à tous,

    voici mon problème; j'ai affaire à des champs de dates de type
    jj/mm/aaaa HH:MM:SS (ex: 28/04/2012 11:29:50) mon but est de créer une fonction (qu'on va nommer Tecoule ) qui calcule le temps écoulé entre 2 dates debut et fin en tenant compte du calendrier(c'est-à-dire uniquement sur la période travaillée) et des heures de services( 9h00- 15h00).
    Le résultat devra s'exprimer en HH:MM:SS par exemple s'il s'est écoulé entre debut et fin 2 jours et 10minutes alors Tecoule doit être égale à 48:00:10

    Pour les jours non travaillés Tecoule doit être vide("").

    Après avoir cherché sans rien trouver je viens faire appel aux experts vba.

    Merci d'avance pour votre aide.

    Cordialement,

    Kedmard.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    salut,

    ta fonction Tecoule doit retourner une Date, que tu peux exprimer en heure par exemple. Les fonctions à suivre comme pistes :
    - DateDiff()
    - Format
    - DatePart()
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut jpcheck,
    Merci pour l'intérêt que tu portes à mon problème.

    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function Tecoule(debut As Date, fin As Date) As Date
       Tecoule = Format(datprevue - datreelle, "HH:MM:SS")
    End Function
    Qui me retourne que des temps compris entre 00:00:00 et 23:59:59
    alors que j'ai aussi des temps écoulés de 3j (72H) et même plus.

    L'autre souci c'est que je ne vois pas comment tenir compte des jours feriés et de la plage d'horaire de service.


    Je continue à chercher...

    A+

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 191
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    La fonction WeekDay te renvoie le numéro d'un jour dans la semaine (1à7) d'une date passé en paramètre. Tu peut déjà créer un code te permettant de compter le nombre de jour hors samedi et dimanche dans ton intervalle.

    Cordialement.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Pour les jours fériés, tu as la qui peut t'aider :
    http://access.developpez.com/faq/?pa...NbJourSsFeries

    Si je pars sur une précision à la minute (ici le nombre de minutes depuis minuit aujourd'hui - attention je ne fait qu'afficher une valeur, c'est une procédure) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub piou()
    Debug.Print TimeSerial(0, DateDiff("n", Date, Now), 0)
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonsoir Messieurs,
    désolé de vrépondre si tard,
    j'ai bien creusé sur les piste que vous m'avez fournies, il reste 2 soucis:

    ---comment soustraire la plage d'heure travaillé. par exemple si la date de début est un vendredi et la date de fin un lundi on un dimanche qui n'est pas un jour ouvré, cependant Tecoule est théoriquement égale à 72h , ce je veux c'est retirer les heures de travail du vendredi et du lundi soit 2*6h=12h donc 72h-12h (pour une la plage 9h00-15h00) . et ce chaque fois que j'ai un jour non travaillé dans mon calcul de Tecoule.


    ---pour calculer la date récente entre deux dates date1 et date2 j'ai ce code
    qui marche mais qui lorsque je souhaite laisser vide ("") (j'ai #Erreur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function Mini(date1 As Date, date2 As Date) As Variant
    If Not (IsNull(date1) And IsNull(date2)) Then
        If date1 > date2 Then
           Mini = (date2)
        Else
           Mini = (date1)
        End If
    Else
        Mini = Null
    End If
    End Function

    Merci d'avance.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    Hum, tu as réinventé la roue pour ta fonction Mini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.WorksheetFunction.Min()
    Tu peux tester si les jours "traversés" sont ouvrés ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Weekday(tadate,vbMonday)
    te retournera un nombre entre 1 et 7, 6 et 7 étant pour samedi et dimanche.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour, JPcheck , Mr.Mof.

    Je vois contrain de clore cette discussion et en ouvrir une autre car de nouvelles précisions me sont parvenues.
    Merci encore pour vos réponse.


    Kedmard.


    A+

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

Discussions similaires

  1. Calculer le temps écoulé
    Par philippef dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/01/2010, 19h33
  2. [Débutant] Calculer le temps écoulé entre deux heures
    Par amine_angel80 dans le forum Assembleur
    Réponses: 2
    Dernier message: 28/05/2008, 16h23
  3. Calcul de temps écoulé
    Par Amiche dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/01/2008, 19h39
  4. Réponses: 1
    Dernier message: 10/05/2007, 13h22
  5. calculer le Temp écoulé
    Par ada_b dans le forum SQL
    Réponses: 1
    Dernier message: 30/11/2004, 09h44

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