Menu

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

bidounet84 - 1 févr. 2018 à 13:14 - Dernière réponse : bidounet84 358 Messages postés jeudi 28 août 2008Date d'inscription 7 février 2018 Dernière intervention
- 2 févr. 2018 à 08:07
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 

6 réponses

Répondre au sujet
Patrice33740 6716 Messages postés dimanche 13 juin 2010Date d'inscription 15 février 2018 Dernière intervention - 1 févr. 2018 à 13:44
0
Utile
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
Commenter la réponse de Patrice33740
bidounet84 358 Messages postés jeudi 28 août 2008Date d'inscription 7 février 2018 Dernière intervention - 1 févr. 2018 à 13:54
0
Utile
1
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 6716 Messages postés dimanche 13 juin 2010Date d'inscription 15 février 2018 Dernière intervention - 1 févr. 2018 à 16:10
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#
Commenter la réponse de bidounet84
ccm81 8247 Messages postés lundi 18 octobre 2010Date d'inscription 13 février 2018 Dernière intervention - 1 févr. 2018 à 15:58
0
Utile
1
Bonjour

Une date est un entier long donc temps = 0

Cdlmnt
Patrice33740 6716 Messages postés dimanche 13 juin 2010Date d'inscription 15 février 2018 Dernière intervention - 1 févr. 2018 à 16:27
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
Commenter la réponse de ccm81
bidounet84 358 Messages postés jeudi 28 août 2008Date d'inscription 7 février 2018 Dernière intervention - 2 févr. 2018 à 08:07
0
Utile
Ok merci effectivement pas besoin d'initialiser.
Commenter la réponse de bidounet84