Copier format heure puis décimal

Résolu
Bonjour,

J'ai une cellulle dans ma feuille Excel au format [h]:mm pour que la personne puisse saisir des heures supérieurs à 24h.
Lorsqu'elle clique sur le bouton la macro copie ces données pour les mettre dans un autre fichier.
La ligne de copie de l'heure est celle-ci :
onglet_BDD.Cells(ligne_Compléter, 8).Value = onglet_Fiche.Cells(ligne_àcopier + 7, 7)

1er problème si plus de 24h dans l'autre fichier le chiffre n'est pas bon.

Ce 2ème fichier est un fichier de contrôle par le responsable. Si c'est ok il appuie à son tour sur un bouton qui active une macro pour un import avec cette le temps en décimal, là idem çà coince quand plus de 24h (j'ai forcé manuellement l'heure dans le 2ème fichier) pour le second test :
heure = Hour(BDD.Cells(ligne_àcopier, 8)) + (Minute(BDD.Cells(ligne_àcopier, 8)) * (1 / 60))
    TRVFINITION.Cells(ligne_Compléter, 8).Value = Format(heure, "0.00") 'Format(BDD.Cells(ligne_àcopier, 8), "0.00")

Comment gérer cet aspect ? Le reste de mes champs est ok, date, article, désignation...

4 réponses

  1. Bonjour

    Une date est un entier long donc temps = 0

    Cdlmnt
    1. Bonjour,

      La date (sans les heures) est un entier Long mais une variable Date est codée sur 8 octets et correspond à un Double (malgré que ses valeurs extrêmes soient contenues dans celles d'un Single) .

      Cordialement
      Patrice
  2. Merci.
    Juste un dernier point j'initialise ma variable heure à 0 car il y a plusieurs lignes à copier.
    Comment initialiser temps qui est une date.
    J'ai testé date = "" mais çà bloque.
    1. Sans le code c'est difficile de comprendre ton problème !
      Je ne vois pas pourquoi tu voudrais initialer temps ...

      Pour affecter un temps à une variable Date :
      Dim temps As Date
       temps = #2/1/2018 4:02:00 PM# 'Attention au format, c'est m/d/yyyy
      'ou
      temps = #2/1/2018# 
      'ou
      temps = #16:02:00#
      
  3. Bonjour,

    « 1er problème si plus de 24h dans l'autre fichier le chiffre n'est pas bon. »
    1) C'est pas le nombre qui n'est pas bon, c'est son format :
    onglet_BDD.Cells(ligne_Compléter, 8).Value = onglet_Fiche.Cells(ligne_àcopier + 7, 7).Value
    onglet_BDD.Cells(ligne_Compléter, 8).NumberFormat = onglet_Fiche.Cells(ligne_àcopier + 7, 7).NumberFormat

    2) Pour obtenir une heure décimale :
    Dim temps As Date
    Dim heure As Double
      temps = BDD.Cells(ligne_àcopier, 8).Value
      heure = temps * 24
      TRVFINITION.Cells(ligne_Compléter, 8).Value = heure
    
    --
    Cordialement
    Patrice