Pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter, inscrivez-vous gratuitement !

 

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 3
    Points
    3

    Par défaut séparer heures et minutes

    Bonjour,

    Je dois additionner des heures et minutes, les convertir en décimales pour ensuite les multiplier par un taux horaire.

    Nombre d'heures travaillées dans une journée X nombre de jours X taux horaire = 00,00$

    exemple : 8:30 + 10:15 + 5:30 = 24:15 (soit 24heures et 15 minutes)X 23,00$ = 557,75$

    Existe-t-il une formule VBA Access simple ???

    Merci

  2. #2
    Expert confirmé
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    3 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 021
    Points : 5 195
    Points
    5 195

    Par défaut

    Bonsoir,
    Si tes heures sont de type date/heure, il suffit de les multiplier par 24.
    08:30 *24 donnera 8.5
    10:15 *24 donnera 10.25
    reste ensuite à les multiplier par le taux horaire

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    12 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 12 108
    Points : 18 408
    Points
    18 408

    Par défaut

    Bonjour.

    Si tu as plus de 24h alors tu ne peux pas utiliser le type Date (qui est en realite Date/Heure).
    Le plus simple est de stocker tes minutes ou tes heures dans un reel double.
    Si tu stocke des heures, la partie decimale est une fraction d'heure pas des minutes.
    Ex : 10:15 devient 10.25

    Pour convertir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function HeureDecimal(prmHeure as date) as double
       dim result as double
       result=hour(prmHeure)+(minute(prmHeure)/60)
       HeureDecimal=result
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function InverseHeureDecimal(prmNbHeure as double) as string
       dim result as string
       dim heure as double=int(prmNbHeure)
       dim minute as double:minute=(prmNbHeure-heure)*60
       result=heure & ":" & format(minute,"00")
       InverseHeureDecimal=result
    end function
    Attention, le resultat de Inverse est une chaine de caracteres pas un nombre. C'est juste pour de l'affichage.

    A mettre dans un module.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Expert confirmé
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    3 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 021
    Points : 5 195
    Points
    5 195

    Par défaut

    bonsoir marot_r
    Si tu as plus de 24h alors tu ne peux pas utiliser le type Date (qui est en realite Date/Heure).
    quelle législation autorise de travailler 24 heures et plus dans une journée ?

  5. #5
    Membre averti Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 433
    Points : 429
    Points
    429

    Par défaut séparer heures et minutes

    Salut,

    Pour les besoins d'une appli, j'avais élaboré ces fonctions qui convertissent des heures/minutes en centièmes ou inversement ce qui permet de faire des opérations en base 10 sur les chiffres obtenus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function ConvH2Centi(H)
        Dim PEnt As Integer, PEntM As Integer, PEntS As Integer, PDimM As Double, PDimS As Double
        'H
        PEnt = Int(Val(Left(H, 2)))
        'mn
        PEntM = Int(Mid(H, 4, 2))
        PDimM = (PEntM / 60)
        's
        If Len(H) > 5 Then
            PEntS = Int(Mid(H, 7, 2))
            PDimS = (PEntS / 60) / 60
        End If
        ConvH2Centi = CDbl(PEnt + PDimM + PDimS)
    End Function
    ...Conversion en HH -> Centièmes

    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
    Function ConvCenti2H(Centi)
        Dim PEnt As Long, PDimM As Double, PEntM As Long, PDimS As Double, PEntS As Long
        If Nz(Centi, 0) = 0 Then
            ConvCenti2H = "00:00:00"
            Exit Function
        End If
     
        'H
        PEnt = Int(Centi)
        'Mn
        PDimM = Centi - PEnt
        PDimM = Int((PDimM) * 60)
        'S
        PDimS = (Centi * 3600) - (PEnt * 3600) - (PDimM * 60)
     
        ConvCenti2H = Format(PEnt, "#00") & ":" & Format(PDimM, "00") & ":" & Format(PDimS, "00")
    End Function
    ...Conversion Centièmes -> Heures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function TpsHH2Mn(tps) As Long
        TpsHH2Mn = 0
        If tps <> 0 Then
            TpsHH2Mn = (Format(tps, "hh") * 60) + Format(tps, "nn")
        End If
    End Function
    ...Conversion HH:NN -> Minutes

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function TpsDiffTxt(tps As Long) As String
        Dim H As String, mn As String
        Dim Hl As Long, mnl As Double
        Hl = Int(tps / 60)
        mnl = tps Mod 60
        H = Format(Trim(str(Hl)), "00")
        mn = Format(Trim(str(mnl)), "00")
        TpsDiffTxt = H & ":" & mn
    End Function
    ...Conversion Minutes -> HH:NN

    Si çà répond à ton besoin...
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    12 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 12 108
    Points : 18 408
    Points
    18 408

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    bonsoir marot_r

    quelle législation autorise de travailler 24 heures et plus dans une journée ?
    Dans une meme journee, 24 c'est le max mais si tu cumules des heures sur la semaine c'est assez facile de depasser.

    Et l'exemple donne 24h15 soit plus d'une jounee.

    Mais en effet on peut contourner en partie le probleme en faisant la somme (heures du jour x Taux horaire).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre éprouvé Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 788
    Points : 1 135
    Points
    1 135

    Par défaut

    Citation Envoyé par tee_grandbois Voir le message
    bonsoir marot_r

    quelle législation autorise de travailler 24 heures et plus dans une journée ?
    Salut,
    L'exemple donné par pgay56 évoque une périodicité hebdomadaire, base légale du Droit du travail en France (35h/hebdo)
    C'est ainsi que fonctionne la paie en France.
    @+
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

  8. #8
    Expert confirmé
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    3 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 021
    Points : 5 195
    Points
    5 195

    Par défaut

    bonsoir hyperion13,
    L'exemple donné par pgay56 évoque une périodicité hebdomadaire, base légale du Droit du travail en France (35h/hebdo)
    oui, et pour brouiller un peu plus les pistes, il a mis un montant en $

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Merci à tous

    Je suis du Canada, c'est pour cette raison que j'utilise le signe $.

    Je me suis cassé le bicycle pour rien. Il m'arrive parfois de faire compliqué lorsque c'est si simple.

    La réponse de tee_grandbois a très bien fait le travail.

    Merci à tous

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

Discussions similaires

  1. Fixer l'heure, les minutes et les secondes d'une date
    Par pyxosledisciple dans le forum Access
    Réponses: 2
    Dernier message: 22/02/2006, 08h02
  2. [Dates] Heure et minute
    Par theanswerdu40 dans le forum Fonctions
    Réponses: 3
    Dernier message: 11/02/2006, 17h05
  3. Conversion des heures en minutes
    Par lacrevette dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/02/2005, 17h50
  4. Probleme comparaison heure et minutes
    Par innosang dans le forum Bases de données
    Réponses: 5
    Dernier message: 13/05/2004, 08h40
  5. recuperer heure et minute de datetime
    Par nora_ora dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/10/2003, 12h47

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