Copier format heure puis décimal

Résolu
bidounet84 -  
bidounet84 Messages postés 412 Date d'inscription   Statut Membre Dernière intervention   -
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...


A voir également:

4 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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
0
bidounet84 Messages postés 412 Date d'inscription   Statut Membre Dernière intervention   80
 
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.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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#
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Une date est un entier long donc temps = 0

Cdlmnt
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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
0
bidounet84 Messages postés 412 Date d'inscription   Statut Membre Dernière intervention   80
 
Ok merci effectivement pas besoin d'initialiser.
0