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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 269 fois - Téléchargée 65 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
eric57920 Messages postés 1 Date d'inscription jeudi 4 décembre 2008 Statut Membre Dernière intervention 14 février 2009
14 févr. 2009 à 21:39
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)))
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
30 nov. 2007 à 09:00
'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...
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
29 nov. 2007 à 23:55
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))
philpaul Messages postés 2 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 19 juillet 2005
19 juil. 2005 à 12:22
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.