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 :

Problème de calcul avec les heures


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Problème de calcul avec les heures
    Bonjour à tous,
    J'ai un petit souci de calcul entre deux champs de type date et heure.

    Je saisie une heure dans le premier champs
    Je saisie une heure dans le deuxième champs
    J'ai ensuite créée un champs indépendant qui fait la différence entre le deuxième champs et le premier.
    Ainsi si je saisie :
    10:00:00 - 12:00:00 j'obtient bien 2:00:00
    en revanche quand je saisie
    23:00:00 - 1:00:00 j'obtient 22:00:00 alors que normalement je devrais obtenir 2:00:00.

    Quelqu'un a-t-il la solution ?
    Merci d'avance
    Steph

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut Heure... d'une même journée.
    Si tu saisie seulement une heure, la partie date du champ est la même pour les deux champs.

    Donc 10:00:00, 12:00:00, 23:00:00 et 1:00:00 sont en fait

    1988-12-30 1:00:00
    1988-12-30 10:00:00
    1988-12-30 12:00:00
    1988-12-30 23:00:00

    Il y a bien 22h de différence entre 1h et 23h... de la même journée.
    La solution serait d'ajouter 1 journée si l'heure est le matin (ou l'avant midi, ça dépend de ton besoin).

    Si, quand c'est "1h du matin", on parle du lendemain, on aurait donc
    (1988-12-31 1:00:00 - 1988-12-30 23:00:00), ce qui te donnera 2h.

    Caroline
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut Ou encore
    23h - 1h = 22h. OK Normal.

    Mais puisque le 1h vient APRÈS, pour toi, c'est ceci que tu as besoin :
    1h - 23h = -2h.
    Te reste plus qu'à prendre la valeur absolue.

    C'est à tester.

    Modif:
    Ça ne fonctionne pas. Access, bien malin, semble corriger tout seul le sens de l'équation. Pour 1h-23h, il donne aussi 22h.
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Je suis vraiment bête mais je ne comprend absolument rien...
    En fait, il est possible aussi que je saisisse des minutes comme par exemple :
    12:20:00

    J'ai un exemple en fichier joint.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Ok merci beaucoup
    Je vais tester.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Tes champs sont de type "Date/Heure". C'est à dire que pour chaque donnée, il y a de la place pour saisir une date ET une heure (et des minutes et des secondes)

    Si tu ne mets qu'une heure (heure, minute et seconde) dans le champ, Access met quand même quelque chose par défaut dans la première partie. Il met "1899-12-30" , mais tu ne la vois pas. Tu peux faire le test :

    -Ouvre ta table en création.
    -Sélectionne ton champ de type "Date/Heure".
    -Écrit "aaaa-j-m\ h:nn:ss" (sans les guillemets) dans la propriété "format".
    -Ouvre ta table en feuille de données et regarde les données qui se trouvent dans le champ Date/Heure.


    Quand tu fais la différence entre deux heures, Access fait en fait un calcul sur des champs Date/Heure. Au complet. D'où ton 23h de différence que tu ne comprennais pas.

    1h du matin vient AVANT 23h du soir. Du moins dans une même journée. Si tu veux que 23h - 1h = 2h, tu dois préciser que c'est 1h le lendemain matin.
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Je comprend mieux... mais je ne vois pas comment faire... ceci dit rare seront les fiches ou l'heure de fin sera la nuit mais cela peut arriver...
    Merci de m'avoir aider... c'est vraiment sympas.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    J'ai vu et bien compris le problème mais comment ajouter ou plutôt préciser que c'est la journée du lendemain comme tu me conseilles dans ton message ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Tu dois passer par le code VBA, avec une condition.
    Quelque chose comme :

    If (monHeureFin est la nuit) then monHeureFin = monHeureFin + 1 journée.
    La condition "est la nuit", c'est à toi de la déterminer. Tu peux dire par exemple que monHeureFin < 6:00 (donc à partir de 6:00:01, c'est le matin.)

    Comment/où fais-tu actuellement ta différence d'heure?
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Je fais la différence dans un champs indépendant d'un formulaire avec une formule comme :
    =[heure fin] - [heure début]

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Il te faut ça à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([heure fin]<#06:00:00#;[heure fin]+24-[heure debut];[heure fin]-[heure debut])
    VraiFaux est une fonction. VraiFaux(condition, siVrai, siFaux). Si la condition est vraie, alors le contenu devient siVrai. Si la condition est fausse, le contenu devient siFaux.

    La condition est [HeureFin]<#06:00:00#.
    # est le symbôle pour indiqué que c'est une date (ou une partie de date).
    Ici, on teste si l'heure de fin survient avant 6h du matin.

    Si oui, on calcule la durée comme je te l'ai suggéré : on ajoute une journée (24h).

    Si non, on calcule comme normalement, donc ce que tu fesais.
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Ca Marche !
    Merci Caroline !!! Ca marche !!!!
    Je ne sais comment te remercier... J'ai passé toute l'après midi à chercher...
    Merci encore !!!

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : mars 2006
    Messages : 166
    Points : 169
    Points
    169
    Par défaut
    Fait plaisir .

    La fonction VraiFaux est en fait une fonction VBA. En anglais, elle s'appelle iif(condition, siVrai, siFaux). D'ailleurs, si tu tapes iif dans le champ contrôle, Access en français te le traduit par VraiFaux.

    Regarde du côté de VBA quand tu auras du temps pour apprendre ça. Dès que tu veux faire un truc "un peu" automatisé, la solution se trouve par là.

    Caroline
    N'oubliez pas le tag . En haut: Outils de la discussion -> Résolu.

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

Discussions similaires

  1. [XL-2007] Problème de calcul avec les données horaires
    Par toma_mota dans le forum Excel
    Réponses: 3
    Dernier message: 02/11/2012, 22h28
  2. Problème de calcul avec les float
    Par Oberown dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/05/2006, 10h28
  3. Problèmes de pointeurs avec les arbres
    Par thierry57 dans le forum C
    Réponses: 17
    Dernier message: 23/12/2005, 00h35
  4. probléme d'enregistrement avec les chexkbox.
    Par pmboutteau dans le forum ASP
    Réponses: 16
    Dernier message: 18/10/2005, 16h05
  5. Réponses: 6
    Dernier message: 19/05/2005, 12h06

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