Conversion d'un temps en secondes au format hh:mm:ss

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 164 fois - Téléchargée 63 fois

Contenu du snippet

Ce code est une version largement plus facile à comprendre et plus court que celui CodeCodeCodac ;-)
Attention, le nombre de secondes doit être inférieur à 86400 (=1 jour) et ne doit pas être décimal(pas de virgule).
De plus, le nombre de secondes pris en compte dans une journée est 86400 et pas 86459,178082191...(jour naturel).

Source / Exemple :


Dim TempsTotal as long     'TempsTotal est le temps en secondes
Dim Heures as Integer
Dim Minutes as Integer
Dim Secondes as Integer

Sub Conversion(TempsTotal)
	Heures = Int(TempsTotal / 3600)
	Minutes = Int((TempsTotal - 3600 * Heure) / 60)
	Secondes = TempsTotal - 3600 * Heures - 60 * Minutes
	Msgbox (Format(Str(Heures + ":" + Minutes + ":" + Secondes))) 'là, on a le temps formaté hh:mm:ss
	'Format sert à afficher 2 chiffres pour les heures, les minutes et les secondes
	'Exemple: avec Format: 08:05:23
	'         sans Format: 8:5:23
End Sub

'La même formule en une seule ligne (pas la peine de déclarer les variables Heures, Minutes et Secondes):
'MsgBox (Format(Str(Int(TempsTotal / 3600)) + ":" + Str(Int((TempsTotal - 3600 * (Int(TempsTotal / 3600))) / 60)) + ":" + Str(TempsTotal - 3600 * (Int(TempsTotal / 3600)) - 60 * (Int((TempsTotal - 3600 * (Int(TempsTotal / 3600))) / 60))), "ttttt"))

Conclusion :


Si ce code comportait des bugs, merci de me le signaler

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
jeudi 4 décembre 2008
Statut
Membre
Dernière intervention
14 février 2009

Merci Proger,

Il manque une ) à la fin de la ligne, mais ca marche super
comme cela ca fonctionne super

Dim Buf() As String
Dim s As Long
Buf = Split(tempsHMS$,":")
s = CLng(Buf(0)*3600 + CLng(Buf(1))*60 + CLng(Buf(2)))
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
'lut Proger.

sans importance ici, certes, juste qu'il vaudrait mieux utiliser, je pense Val() que CLng()

Dans l'absolu, hein, pas dans ce cas précis... la cause ? Clng se base sur les parametres regionnaux, donc doit être, je pense plus long...
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008

L'inverse, pour Philpaul...
Dim Buf() As String
Dim s As Long
Buf = Split(tempsHMS$,":")
s = CLng(Buf(0)*3600 + CLng(Buf(1))*60 + CLng(Buf(2))
Messages postés
2
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
19 juillet 2005

si quelqu'un pourrai me donner le code pour faire l'inverse, passer
d'un temps minute:seconde pour avoir le total de seconde d'une manière aussi simple que celle là, ç'a m'aiderai

ps: je suis un néophyte
Merci beaucoup c ce que je cherchais! Cool! Sympas!
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.