HEURES EN NOMBRE DECIMAL
Résolu/Fermé
A voir également:
- HEURES EN NOMBRE DECIMAL
- Convertir heure en décimal excel ✓ - Forum Excel
- Excel: convertir minutes en décimales - Forum Excel
- Telecharger 24 heures chrono saison 1 complet en français - Forum Audio
- Nombre facile - Télécharger - Outils professionnels
- En raison d'un nombre important d'échec de connexion snapchat - Forum Snapchat
4 réponses
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
572
21 nov. 2010 à 12:02
21 nov. 2010 à 12:02
Bonjour,
Et si tu faisais tout simplement
B1= A1*24 avec format standard
Bonne journée.
Et si tu faisais tout simplement
B1= A1*24 avec format standard
Bonne journée.
g : c'est de l'humour ?
Bon, le problème c'est que les dates/heures sont gérées à partir du 1/1/1900 et que ton nombre d'heures passe un mois.
La seule façon que je vois, c'est une fonction personnalisée. Tu fais ALT-F11, tu cliques droit sur la racine du projet, tu fais ajouter - module, tu balance ceci dedans
Option Explicit
Function HDec(Dt As Date) As Single
Dim Dt2 As Date
Dim Delta As Long
Dim Hrs As Long
Dim Mnt As Long
Delta = DateDiff("n", 0, Dt)
Hrs = Delta \ 60
Mnt = Delta - Hrs * 60
HDec = Hrs + Mnt / 60
End Function
Ensuite dans ta feuille, pour ta cellule de résultat :
=HDec(A1)
Et zou...
Bon, le problème c'est que les dates/heures sont gérées à partir du 1/1/1900 et que ton nombre d'heures passe un mois.
La seule façon que je vois, c'est une fonction personnalisée. Tu fais ALT-F11, tu cliques droit sur la racine du projet, tu fais ajouter - module, tu balance ceci dedans
Option Explicit
Function HDec(Dt As Date) As Single
Dim Dt2 As Date
Dim Delta As Long
Dim Hrs As Long
Dim Mnt As Long
Delta = DateDiff("n", 0, Dt)
Hrs = Delta \ 60
Mnt = Delta - Hrs * 60
HDec = Hrs + Mnt / 60
End Function
Ensuite dans ta feuille, pour ta cellule de résultat :
=HDec(A1)
Et zou...
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
Modifié par eriiic le 21/11/2010 à 13:10
Modifié par eriiic le 21/11/2010 à 13:10
Bonjour,
g ne plaisantait pas...
B1= A1*24 avec format standard
et zou..
eric
g ne plaisantait pas...
B1= A1*24 avec format standard
et zou..
eric
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 21/11/2010 à 13:23
Modifié par lermite222 le 21/11/2010 à 13:23
Bonjour,
Faut alors m'expliquer !
A1 en format standard avec >> 7655:43:00
Résultat en B1 >> 183737:12:00
??
A+
Rectification >> en B1 7655,716667
Edit : C'est JUSTE.
Faut alors m'expliquer !
A1 en format standard avec >> 7655:43:00
Résultat en B1 >> 183737:12:00
??
A+
Rectification >> en B1 7655,716667
Edit : C'est JUSTE.
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
572
21 nov. 2010 à 13:47
21 nov. 2010 à 13:47
Nunuche,
J'aime beaucoup l'humour, mais la c'est sérieux.... et très connu....
Bon dimanche
J'aime beaucoup l'humour, mais la c'est sérieux.... et très connu....
Bon dimanche
g
Messages postés
1262
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
15 mai 2017
572
21 nov. 2010 à 13:51
21 nov. 2010 à 13:51
lermite222,
B1= A1*24 avec format standard
C'est bien sur B1 qui est au format standard.... comme d'ailleurs le confirme eriiic
Bon dimanche
B1= A1*24 avec format standard
C'est bien sur B1 qui est au format standard.... comme d'ailleurs le confirme eriiic
Bon dimanche
Merci les zamis pour l'intéret que vous avez apporté a mon problème mais je ne suis pas un super expert en excel donc je veux bien mettre en application vos conseil mais une fois que j'ai fait le alt F11 ou dois je cliquer y a t'il quelqu'un qui puisse me donner un exemple.
d'avance merci pour votre aide et votre temps.
pour info la formule =A1*24 cela fonctionne jusqu'a une certaine limite
exemple
A1 je tappe 10035:56
B1 je mets la formule =A1*24 ==> résultat : #VALEUR! et la cellule est bien au format standard
merci Stef.
d'avance merci pour votre aide et votre temps.
pour info la formule =A1*24 cela fonctionne jusqu'a une certaine limite
exemple
A1 je tappe 10035:56
B1 je mets la formule =A1*24 ==> résultat : #VALEUR! et la cellule est bien au format standard
merci Stef.
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
Modifié par eriiic le 21/11/2010 à 19:53
Modifié par eriiic le 21/11/2010 à 19:53
La réponse se trouve dans mon poste de 12:24, testé... et fonctionnel. Plus simple on meurt.
C'est bien d'avoir deviné qu'il fallait que ça aille jusqu'à 10035, mais as-tu réellement testé ta fonction sur cette valeur ?
Autre proposition qui prend en compte les saisies numériques ou bien sous forme de chaine si dépassement des limites :
A mettre dans un module, le temps doit être saisi sous la forme h:mm:ss
eric
C'est bien d'avoir deviné qu'il fallait que ça aille jusqu'à 10035, mais as-tu réellement testé ta fonction sur cette valeur ?
Autre proposition qui prend en compte les saisies numériques ou bien sous forme de chaine si dépassement des limites :
Function HDec(t As Range) As Double Dim ch If IsNumeric(t) Then HDec = t * 24 Else ch = Split(t, ":") HDec = ch(0) + ch(1) / 60 + ch(2) / 3600 End If End Function
A mettre dans un module, le temps doit être saisi sous la forme h:mm:ss
eric
Il y en a vraiment qui n'ont que ça à faire, on dirait. Pour le reste, mon code était fonctionnel. J'ai pensé à le prendre en chaine mais cela supposait une conversion des valeurs entrées, et c'est nettement plus lourdingue que mon code en terme de vitesse. Les limites sont celles des dates de windows, et il y a de quoi faire.
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 212
Modifié par eriiic le 21/11/2010 à 20:18
Modifié par eriiic le 21/11/2010 à 20:18
Donc tu n'as pas testé ta fonction sur une valeur telle que 10035:30:00 sinon tu aurais vu qu'elle retourne #VALEUR!
Si c'est pour avoir Les limites sont celles des dates de windows autant faire t*24 qui est beaucoup plus simple et plus rapide non ?
eric
Si c'est pour avoir Les limites sont celles des dates de windows autant faire t*24 qui est beaucoup plus simple et plus rapide non ?
eric
merci les gars,
désolé mais au début je ne comprenait pas directement le chemin pour le module, je ne suis pas un expert comme vous.
j'ai testé le module du poste de 12:24 mais le résultat est ==> #VALEUR! pour 10035:56.
puis j'ai testé la formule d'eric 19:52 et la ca fonctionne a merveille.
un trés grand merci pour votre aide et votre temps.
stef.
désolé mais au début je ne comprenait pas directement le chemin pour le module, je ne suis pas un expert comme vous.
j'ai testé le module du poste de 12:24 mais le résultat est ==> #VALEUR! pour 10035:56.
puis j'ai testé la formule d'eric 19:52 et la ca fonctionne a merveille.
un trés grand merci pour votre aide et votre temps.
stef.
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 nov. 2010 à 12:39
21 nov. 2010 à 12:39
Bonjour,
Excel considère tes nombres comme une DateSerial, il est donc impossible de calculer à partir de cela.
Une solution (parmis d'autre)
Mettre A1 en format Texte
Coller cette fonction dans un module public.
et en B1 .. =Test(A1)
A+
Excel considère tes nombres comme une DateSerial, il est donc impossible de calculer à partir de cela.
Une solution (parmis d'autre)
Mettre A1 en format Texte
Coller cette fonction dans un module public.
Function Test(Rg As Range) As Double Dim A As String, TB Application.Volatile A = Rg & ":00" 'au cas ou il n'y a pas de seconde TB = Split(A, ":") Test = TB(0) + TB(1) / 60 + TB(2) / 3600 End Function
et en B1 .. =Test(A1)
A+