Addition & soustraction d'heure sur une base de 24h

Soyez le premier à donner votre avis sur cette source.

Vue 28 433 fois - Téléchargée 992 fois

Description

Cette fontion permet d'ajouter ou de retrancher des Heures.

Source / Exemple :


Dim Second_Temp As Integer     'Stock temporairement la valeur des Secondes
Dim Minute_Temp As Integer     'Stock temporairement la valeur des Minutes
Dim Heure_Temp As Integer      'Stock temporairement la valeur des Heures

'Operation Doit être positif pour un addittion des heures et negatif pour la soustration.
'Time1 et Time2 sont de la forme "##:##:##"
'Operation doit être différent de 0 sinon Time_operation = Time1
'Le retour Time_Operation() est de la forme "##:##:##"
Private Function Time_operation(ByRef Time1 As String, ByRef Time2 As String, ByRef Operation As Integer)
Operation = Sgn(Operation)
Second_Temp = Val(Right(Time1, 2)) + Val(Right(Time2, 2)) * Operation
Minute_Temp = Val(Mid(Time1, 4, 2)) + Val(Mid(Time2, 4, 2)) * Operation
Heure_Temp = Val(Left(Time1, 2)) + Val(Left(Time2, 2)) * Operation

If Second_Temp > 59 Or Second_Temp < 0 Then
  Second_Temp = Second_Temp - 60 * Operation
  Minute_Temp = Minute_Temp + 1 * Operation
End If
If Minute_Temp > 59 Or Minute_Temp < 0 Then
  Minute_Temp = Minute_Temp - 60 * Operation
  Heure_Temp = Heure_Temp + 1 * Operation
End If
If Heure_Temp > 23 Or Heure_Temp < 0 Then Heure_Temp = Heure_Temp - 24 * Operation ' enlever cette ligne pour suppr. la base 24H

Time_operation = Format(Heure_Temp, "0#") & ":" & Format(Minute_Temp, "0#") & ":" & Format(Second_Temp, "0#")
End Function

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
Mon commentaire ?

Pourquoi (sans jeu de mots) chercher midi à quatorze heure ?

Méthode scolaire et efficace, donc :

Private Sub Command1_Click()
time1 = "01:40:20"
time2 = "10:25:41"
heures = Val(Hour(time1)) + Val(Hour(time2))
minutes = Val(Minute(time1)) + Val(Minute(time2))
secondes = Val(Second(time1)) + Val(Second(time2))
ajustons secondes, minutes, 60
DoEvents
ajustons minutes, heures, 60
MsgBox heures & " heures " & minutes & " minutes " & secondes & " secondes "
End Sub

Private Sub ajustons(quoi, quoiavant, combien)
qui = quoi Mod combien
quoiavant = quoiavant + (quoi \ combien)
quoi = qui
End Sub

et on pourrait continuer avec ce même principe avec des 10èmes, des centième, des milliers, etc.... de secondes, bien évidemment

Private Sub Command1_Click()
time1 = "01:40:20"
time2 = "10:25:41"
heures = Hour(time1) + Hour(time2)
minutes = Minute(time1) + Minute(time2)
secondes = Second(time1) + Second(time2)
ajustons secondes, minutes, 60
DoEvents
ajustons minutes, heures, 60
MsgBox heures & " heures " & minutes & " minutes " & secondes & " secondes "
End Sub

Private Sub ajustons(quoi, quoiavant, combien)
qui = quoi Mod combien
quoiavant = quoiavant + (quoi \ combien)
quoi = qui
End Sub
stefan69
Messages postés
3
Date d'inscription
dimanche 17 avril 2005
Statut
Membre
Dernière intervention
1 juin 2006

Trop TOP, la classe cette fonction.
J'explose de joie lorsqu'il me sort le bon chiffre.
J'ai tellement galèré dessus, bou, j'y pense plus :-)
Comme ils le disent si bien dans une pub 'heu reux'
GarnetDiAlexandros
Messages postés
55
Date d'inscription
mercredi 31 juillet 2002
Statut
Membre
Dernière intervention
19 novembre 2004

Très très bon code
ça marche du tonnerre et c'est bien expliqué
fbrt
Messages postés
39
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
16 avril 2005

Désolé pour ma question. Je viens de trouver une méthode : convertir en seconde, faire la division, remettre en heure. En plus, les conversions d'heure/seconde sont des sources de toi. Merci quand meme, tes sources vont m'aider.
fbrt
Messages postés
39
Date d'inscription
lundi 25 février 2002
Statut
Membre
Dernière intervention
16 avril 2005

Salut, ton code m'est bien utile, je l'ai utilisé pour un programme. Mais je cherche aussi une fonction pour diviser une heure par un nombre entier (en arrondissant si ca tombe pas juste), par ex : 05:02:00 /2 = 02:31:00.
Tu sais pas comment je pourrais faire cette fonction ?

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.