Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTIR DES SECONDES EN MINUTES, HEURES, JOURS


Information sur la source

Catégorie :Date & Heure Classé sous : convertir, seconde, minute, heure, jour Niveau : Débutant Date de création : 26/01/2006 Vu : 66 461

Note :
6,33 / 10 - par 3 personnes
6,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

Comme le titre l'indique, cette fonction permet de convertir des secondes en minutes, heures et jours !

Rien de bien compliqué donc.
 

Source

  • Public Function ConvertirSecondes(Valeur As Double) As String
  • On Error GoTo Erreur
  • Dim Jours, Heures, Minutes, Secondes As Double
  • Dim JoursRestants, HeuresRestantes, MinutesRestantes, SecondesRestantes As String
  • Dim Resultat As String
  • If Valeur >= 86400 Then
  • Jours = Int(Valeur / 86400)
  • JoursRestants = Format(Jours) & " Jour(s)"
  • Else
  • Jours = 0
  • End If
  • Valeur = Valeur - (Jours * 86400)
  • If Valeur >= 3600 Then
  • Heures = Int(Valeur / 3600)
  • HeuresRestantes = Format(Heures) & " Heure(s)"
  • Else
  • Heures = 0
  • End If
  • Valeur = Valeur - (Heures * 3600)
  • If Valeur >= 60 Then
  • Minutes = Int(Valeur / 60)
  • MinutesRestantes = Format(Minutes) & " Minute(s)"
  • Else
  • Minutes = 0
  • End If
  • Valeur = Valeur - (Minutes * 60)
  • If Valeur > 0 Then
  • Secondes = Valeur
  • SecondesRestantes = Format(Secondes) & " Seconde(s)"
  • Else
  • Secondes = 0
  • End If
  • Resultat = JoursRestants & " " & HeuresRestantes & " " & MinutesRestantes & " " & SecondesRestantes
  • If Len(Resultat) = 0 Then ConvertirSecondes = "0 Seconde(s)" Else ConvertirSecondes = Resultat
  • Exit Function
  • Erreur:
  • MsgBox "Erreur N° " & Err.Number & vbNewLine & "Description : " & Err.Description, vbCritical, App.Title
  • Err.Clear
  • End Function
Public Function ConvertirSecondes(Valeur As Double) As String
On Error GoTo Erreur

Dim Jours, Heures, Minutes, Secondes As Double
Dim JoursRestants, HeuresRestantes, MinutesRestantes, SecondesRestantes As String
Dim Resultat As String

If Valeur >= 86400 Then
    Jours = Int(Valeur / 86400)
    JoursRestants = Format(Jours) & " Jour(s)"
    Else
    Jours = 0
End If

Valeur = Valeur - (Jours * 86400)

If Valeur >= 3600 Then
    Heures = Int(Valeur / 3600)
    HeuresRestantes = Format(Heures) & " Heure(s)"
    Else
    Heures = 0
End If

Valeur = Valeur - (Heures * 3600)

If Valeur >= 60 Then
    Minutes = Int(Valeur / 60)
    MinutesRestantes = Format(Minutes) & " Minute(s)"
    Else
    Minutes = 0
End If

Valeur = Valeur - (Minutes * 60)

If Valeur > 0 Then
    Secondes = Valeur
    SecondesRestantes = Format(Secondes) & " Seconde(s)"
    Else
    Secondes = 0
End If

Resultat = JoursRestants & " " & HeuresRestantes & " " & MinutesRestantes & " " & SecondesRestantes

If Len(Resultat) = 0 Then ConvertirSecondes = "0 Seconde(s)" Else ConvertirSecondes = Resultat

Exit Function

Erreur:
MsgBox "Erreur N° " & Err.Number & vbNewLine & "Description : " & Err.Description, vbCritical, App.Title
Err.Clear
End Function

Conclusion

La fonction n'est pas commentée mais sa comprehenssion est, je pense, simple même pour un débutant.

A vos commentaires (et vos votes lol)
 

Commentaires et avis

signaler à un administrateur
Commentaire de yvesyves le 26/01/2006 08:10:09

Sympa mais pas très instructif.

signaler à un administrateur
Commentaire de econs le 26/01/2006 12:11:50 administrateur CS

Pour quelle raison aurait-on  Len(Resultat) = 0 ??
Tu l'écris juste au dessus, et il y a au moins 3 espaces dedans ...

ConvertirSecondes = "0 Seconde(s)"
S'il y en a zéro, tu peux tout de suite enlever le (s)

La fonction Format ne te sert à rien. Il s'agit ici de convertir des nombres en chaines de caractères. il faut utiliser CStr()
JoursRestants = CStr(Jours) & " Jour(s)"

Dans le cas où Jours, Heures, Minutes, Secondes valent 0, HeuresRestantes, MinutesRestantes, ... ne sont pas affectées, et dans la chaine de caractères finale, tu te retrouves avec deux espaces consécutifs : "3 Jour(s)  2 Minute(s) 4 Seconde(s)"

Le "Else Secondes=0" ne sert à rien.


A part tout çà, c'est propre. Et il y a une gestion d'erreur intégrée (ce qui est très bien).
Il n'y a pas de commentaire, mais avec des connaissances mathématiques de base, on comprend très bien ce qui se passe.
Idéal pour débutants.


signaler à un administrateur
Commentaire de PaTaTe le 26/01/2006 15:27:31

C'est vrai qu'en relisant je trouve aussi qu'il y a matière à optimisations/corrections.

Dès que j'ai un petit moment, je met à jour :)

signaler à un administrateur
Commentaire de drissou le 27/01/2006 12:50:58

voici une énième version de conversion, mais là je ne gère pas l'écriture des mots heure, minute et secondes

Sub Secondes_VersHMS(Secondes As Long, NHeures As Long, NMinutes As Long, NSecondes As Long)
Dim Départ As Long

Départ = Secondes
If Secondes = 0 Then
    NHeures = 0
    NMinutes = 0
    NSecondes = 0
Else
    ' calcul des secondes
    NSecondes = Départ Mod 60
    ' calcule des minutes
    Départ = (Départ - NSecondes) / 60
    NMinutes = Départ Mod 60
    ' calcul des heures
    Départ = (Départ - NMinutes) / 60
    NHeures = Départ / 60
End If
End Sub

Driss

signaler à un administrateur
Commentaire de yvesyves le 27/01/2006 13:02:57

C déjà plus court!! ;)

signaler à un administrateur
Commentaire de PaTaTe le 28/01/2006 05:18:25

et moins fonctionnel !

Si on convertit depuis des secondes pas besoin des parametres minites, heures et age du capitaine.

De plus pourquoi 2 fois secondes en paramètre ?

signaler à un administrateur
Commentaire de drissou le 28/01/2006 12:05:00

On peut effectivement mettre des conditions pour éviter de calculer les minutes et les heures.
bon je vois pas ou est le capitaine là dedans, la seule différence est que je n'ai pas mis le calcul du nombre de jours.

Et si tu regardes bien la sub tu verras , je pense sans problème que la première variable 'Secondes' est celle qui importe le nombre initial de secondes à convertir et que la deuxième variable 'Nseconde' qui veut dire 'Nouvelle Seconde' corresppond aux secondes restantes.
d'autre part je ne sais pas si le fait de mettre beaucoup de conditions accélère ou non le traitement. je demande aux puristes aito didacyte que je suis ..
Quant à la fontionnalité, elle me convient car cette sub peut être utilisée même si on ne veut pas tout de suite afficher les valeurs , mais refaire encore un traitement.
L'idéal serait de la transformer en fonction, mais il faudrait créé un type définit
Quant au capitaine, son age ne m'intéresse pas vraiment dans le type de prog que je fais.
je préfaire que les valeurs et pas forcément l'intitulé

enfin, chacun voit midi à sa porte..
si ta version te convient
Drissou

signaler à un administrateur
Commentaire de Gobillot le 29/01/2006 19:17:27

une autre version.
calcul limité à une seule division.
n'affiche pas si le nombre est égal à zéro.
met le "s" si nécessaire.


Private Function ConvertirSecondes(Valeur As Double) As String
    Dim dt       As Date
    Dim Fmt      As String
    Dim Fj       As String
    Dim Fh       As String
    Dim Fm       As String
    Dim Fs       As String
    Dim x        As Long
    Dim Resultat As Long
    Dim Jours    As Long
    Dim Heures   As Long
    Dim Minutes  As Long
    Dim Secondes As Long
    
    dt = Valeur / 86400
    Jours = Int(dt)
    Heures = Hour(dt)
    Minutes = Minute(dt)
    Secondes = Second(dt)

    x = 1
    
    Select Case Secondes
       Case Is > 9: Secondes = Secondes * x: Fs = "00 secondes ": x = x * 100
       Case Is > 1: Secondes = Secondes * x: Fs = "0 secondes ":  x = x * 10
       Case Is = 1: Secondes = Secondes * x: Fs = "0 seconde ":   x = x * 10
       Case Is = 0: Fs = ""
       End Select

    Select Case Minutes
       Case Is > 9: Minutes = Minutes * x: Fm = "00 minutes ": x = x * 100
       Case Is > 1: Minutes = Minutes * x: Fm = "0 minutes ":  x = x * 10
       Case Is = 1: Minutes = Minutes * x: Fm = "0 minute ":   x = x * 10
       Case Is = 0: Fm = ""
       End Select
    
    Select Case Heures
       Case Is > 9: Heures = Heures * x: Fh = "00 heures ": x = x * 100
       Case Is > 1: Heures = Heures * x: Fh = "0 heures ": x = x * 10
       Case Is = 1: Heures = Heures * x: Fh = "0 heure ":  x = x * 10
       Case Is = 0: Fh = ""
       End Select
    
    Select Case Jours
       Case Is > 9: Jours = Jours * x: Fj = "00 jours "
       Case Is > 1: Jours = Jours * x: Fj = "0 jours "
       Case Is = 1: Jours = Jours * x: Fj = "0 jour "
       Case Is = 0: Fj = ""
       End Select

    Resultat = Jours + Heures + Minutes + Secondes
    Fmt = Fj & Fh & Fm & Fs
    ConvertirSecondes = Format$(Resultat, Fmt)
    
End Function

signaler à un administrateur
Commentaire de katsankat le 30/01/2006 17:18:23

2 autres versions:
La première est dans la shlwapi.dll, la fonction s' appelle StrFromTimeInterval.

Et la mienne:
Option Explicit


Public Function Durée(Tps As Long) As String

    Dim Heure As Long, Mn As Long, Sec As Long

    Dim sHeure As String, sMn As String, sSec As String



    Heure = Format(Int(Tps / 3600), "00")

    Mn = Format(Int((Tps - 3600 * Heure) / 60), "00")

    Sec = Format(Tps - 3600 * Heure - 60 * Mn, "00")

    

    If Heure = 0 Then sHeure = "" Else sHeure = IIf(Heure > 1, Heure & " heures ", "1 heure ")

    If Mn = 0 Then sMn = "" Else sMn = IIf(Mn > 1, Mn & " minutes ", "1 minute ")

    If Sec = 0 Then sSec = "" Else sSec = IIf(Sec > 1, Sec & " secondes ", "1 seconde ")

    

    Durée = sHeure & sMn & sSec


End Function


Private Sub Form_Load()

MsgBox Durée(2354), , "2354s"

MsgBox Durée(1), , "1s"

MsgBox Durée(60), , "60s"

MsgBox Durée(3600), , "3600s"

MsgBox Durée(3601), , "3601s"

MsgBox Durée(148795), , "148795s"

End Sub

signaler à un administrateur
Commentaire de PaTaTe le 30/01/2006 19:41:03

J'adore les commentaires, au moins plusieurs methodes sont mises en avant :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

convertir une chaine de caractère en heure minute [ par romglad ] Je récupère une variable de type string sensée contenir une heure minute. ma variable est sur 4 caractères ex : hre = 1721 Je veux affecter cette vari Convertir en seconde l'heure systeme ? [ par DDelec24 ] Cela fait peu de temps que je m'adonne au basic et j'orais une question.Comment-fait'on pour convertir l'heure systeme en secondes ????? :-)merci de v convertir l'heure 12:23:21 en minute [ par mary_tssi ] mary_1984 vb 6 et le calcul d'heure minute seconde [ par boutaibmustapha ] Salut tout le mondeJ'ai mis en place une petite application de pointage heure d'entrée et heure de sortie, je voudrais demander votre aide sur le poin fonction print [ par droger ] Bonjour,j'apprend depuis quelques jours a utiliser VB6 pour mon stage. Je dois en fait creer un petit programme qui permette de mettre des donnees .tx Comparé une heure Access avec une heure VB6 [ par koriteki ] Bonjour,Je cherche à comparer dans le cadre d'un requete une heure access avec une heure VB6, pour trier des enregistrement. Voila le code utilisé:Dim Convertir un elapsedtime en seconde [ par finelame ] Bonjour, Voila ... comment on peut simplement convertir un elapsedtime en second en VB.Net ?Merci, Control pour gerer heure minute [ par garstoff ] Salut je cherche un control autre que datetimepicker pour gerer l'heure. Un style numericupdown ou l'utilisateur selectionne les heures ou les minutes Convertir date+heure en string vers FILETIME [ par violent_ken ] Violent Ken Bonjour, j'aimerais pouvoir convertir une string au format "DD-MM-YYYY HH:MM:SS" (ou autre, mais avec date et time dans une même s convertir jour de l'année en date [ par marcod59 ] Bonjour,Je cherche comment en VBA, ou avec une formule d'excel, convertir le quantième du jour de l'année en une date.je sais convertir une date en qu


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.