Copier format heure puis décimal [Résolu/Fermé]

-
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...


Afficher la suite 

4 réponses

Messages postés
7808
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
16 septembre 2019
1209
0
Merci
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
Messages postés
401
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
1 août 2019
48
0
Merci
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.
Patrice33740
Messages postés
7808
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
16 septembre 2019
1209 -
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#
Messages postés
9116
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 septembre 2019
1627
0
Merci
Bonjour

Une date est un entier long donc temps = 0

Cdlmnt
Patrice33740
Messages postés
7808
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
16 septembre 2019
1209 -
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
Messages postés
401
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
1 août 2019
48
0
Merci
Ok merci effectivement pas besoin d'initialiser.