Copier format heure puis décimal

Résolu/Fermé
bidounet84 - Modifié le 1 févr. 2018 à 13:21
bidounet84 Messages postés 416 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 22 mai 2023 - 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...


A voir également:

4 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
1 févr. 2018 à 13:44
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 416 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 22 mai 2023 80
1 févr. 2018 à 13:54
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
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#
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
1 févr. 2018 à 15:58
Bonjour

Une date est un entier long donc temps = 0

Cdlmnt
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
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
0
bidounet84 Messages postés 416 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 22 mai 2023 80
2 févr. 2018 à 08:07
Ok merci effectivement pas besoin d'initialiser.
0