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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : mars 2018
    Messages : 15
    Points : 16
    Points
    16

    Par défaut Transformation de durée sup. à 24h00 en date + heures après importation Excel

    Bonjour à tous,

    Encore une fois, je fais appel à vous pour me permettre de briller au bureau.

    Je pensais pouvoir relever le défi facilement par moi-même mais, il semble que je ne vienne pas de la même planète que les développeurs Microsoft.

    La situation est la suivante:

    J'ai un simple fichier Excel avec 3 colonnes: Nom, Prenom et total_heures.
    La colonne total_heures de ce fichier .xlsx est au format HH:MM:SS
    Pour certaines lignes de ce fichier, il est possible d'avoir des totaux supérieurs à 23:59:59 (exemple: Jean, Lemoine, 50:00:00)

    Après importation dans Access avec un format 'Date' appliqué sur la 3ième colonne, la table s'affiche correctement pour toutes les lignes inférieures à 24:00:00 mais dès que le 24 heures est atteint, le logiciel applique une logique particulière qui n'est pas dénuée de sens mais, comme je le dis à ma conjointe:" Si j'avais voulu un T-Shirt Rose, je ne t'aurais pas demandé d'en acheter un rouge et un blanc pour qu'ensuite tu les laves ensemble !!!!!!"

    donc.. pour l'exemple de Jean Lemoine, les 50:00:00 deviennent 1900-01-02 02:00:00. On peut imaginer que cela équivaut à 2 jours (48 heures) + 2 heures.

    Sauf que j'aimerais voir afficher 50:00:00 dans ma table ou minimalement dans une requête pour pouvoir ensuite faire des calculs sur des durées et non des dates.

    et là..... malgré des recherches sur des forums français et anglais, je ne trouve rien de simple.

    Il y a bien des posts ou même des blogs complets avec des formules de vba de 50 lignes mais je ne peux pas croire qu'il n'y ait pas plus simple ?

    Si Access a été en mesure d'appliquer un algorithme pour transformer la donnée à l'import, le même formule doit bien pouvoir être inversée sans passer par de la technologie extraterrestre non?

    Donc si quelqu'un à une piste de solution, ça serait super. PS: Je prends aussi la solution toute faite.

    Merci à tous

  2. #2
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : mars 2018
    Messages : 15
    Points : 16
    Points
    16

    Par défaut

    Méaculpa, je viens de voir que le format est déjà présent dans le fichier Excel.
    La barre de formule pour une cellule affiche 1900-01-01 04:00:00 alors que la cellule affiche 28:00:00.

    Je vais chercher de ce côté

  3. #3
    Rédacteur/Modérateur
    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    6 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 6 200
    Points : 12 919
    Points
    12 919
    Billets dans le blog
    11

    Par défaut

    Bonsoir,

    Pour info dans Access pour afficher un total d'heures supérieur à 24 on convertit une date en texte comme expliqué dans la faq :

    https://access.developpez.com/faq/?page=dates#durees

    et en effet, les dates sont stockées sous forme numérique, la partie entière représente la date et la partie décimale l'heure.

    Ensuite pour faire des calculs sur ces formats spéciaux "50:00:00" il faut l'éclater en 3 parties H, M , S, puis convertir en secondes :

    Duree= H*3600 + M*60 + S

    faire la somme de chaque durée :

    TotalDuree=Duree1 + Duree2 + ...+ DureeN

    Enfin, faire l'opération inverse pour avoir le résultat au format "HH:MM:SS", avec quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    H = TotalDuree\3600
    M = (TotalDuree mod 3600)\60
    S = (TotalDuree mod 3600) mod 60
    Et enfin on concatène donc ces résultats pour obtenir à nouveau "HH:MM:SS".

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Si vous souhaitez mettre en place une gestion de planning, une gestion de stock, de ventes/achats ou tout autre application Access, je peux vous proposer mes services.
    Pour cela n'hésitez pas à me contacter par courriel ou mp.


    Simple comme bonjour et merci

    Mes tutoriels et contributions sur ma page personnelle.

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

Discussions similaires

  1. convertir minutes en heures sup à 24h00
    Par totor92290 dans le forum IHM
    Réponses: 5
    Dernier message: 15/10/2012, 23h12
  2. transformer date/heure avec SchiftDateTime
    Par campia dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 10/12/2008, 14h33
  3. Réponses: 27
    Dernier message: 05/09/2008, 00h07
  4. Réponses: 2
    Dernier message: 21/09/2006, 11h28
  5. Durée en jour, minute et heure entre 2 dates
    Par nora_ora dans le forum Oracle
    Réponses: 7
    Dernier message: 10/08/2005, 22h47

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