Operations sur les heures!

Messages postés
19
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
25 juillet 2003
-
Messages postés
406
Date d'inscription
lundi 2 décembre 2002
Statut
Membre
Dernière intervention
25 janvier 2014
-
slt,

j'aimerais soustraire 2 heures
(ex: 1h48 - 1h30=0h18)

Pour cela je transforme ma variable string pour obtenir une varaible "time" grace a la fonction:
time_var = timevalue(string_var)

Mon probleme c'est que lorsque je fait mon operation time_var1 - time_var2= ... VB me retransforme ma reponse en 1 réel !!! alors comment est-ce que je peux faire pour obtenir le resultat sous forme d'heure???

Merci d'avance

5 réponses

Messages postés
100
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
27 juillet 2004

J'ai bien galéré pour arriver à qqc qui va peut-âtre t'horrifier.

D'abord on convertit en seconde, puis on soustrait, et enfin on reconstitue.

Bref, si tu veux essayer, mets un bouton sur ta feuille et voici le code

----------------------------------------------------------
Option Explicit

Private Sub Command1_Click()

Dim time_var1 As Long
Dim time_var2 As Long
Dim time_var3 As Long
Dim time_var4 As Integer
Dim time_var5 As Integer
Dim time_var6 As Integer
Dim reste As Integer
Dim heure

'convertir en seconde
'avec heure1=23:10:05
' heure2=22:10:56
time_var1 = (CLng(3600) * 23) + (10 * 60) + 5
time_var2 = (CLng(3600) * 22) + (10 * 60) + 56


'soustraire
time_var3 = time_var1 - time_var2


'heure : on divise par 3600, partie entière
time_var4 = time_var3 \ 3600 'division entière


'minute : diviser le reste par 60
'le reste
reste = time_var3 Mod 3600 'reste de la division entière
'diviser par 60, partie entière
time_var5 = reste \ 60


'seconde : c'est ce qui reste
time_var6 = reste Mod 60


'alors, le résultat c'est
heure = TimeValue(time_var4 & ":" & time_var5 & ":" & time_var6)
MsgBox heure
End Sub
----------------------------------------------------------

Bon courage...NuNu
Messages postés
93
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
22 juillet 2006

Chapeau NuNu, mais je pense avoir plus court (désolé je suis feignant de nature).
Mon projet écrit en VB5 sous Windows 98 SE, comporte une form et un bouton de commande.

Private Sub Command1_Click()
'----- Déclaration des variables locales
Dim MonHeure_1 As Variant
Dim MonHeure_2 As Variant
Dim MonResultat As Variant

'----- Initialisation des variables
MonHeure_1 = "1:48:00"
MonHeure_2 = "1:30:00"

'----- Calcul de la différence entre les heures
'----- Le résultat est exprimé en secondes
MonResultat = DateDiff("s", MonHeure_2, MonHeure_1)

'----- Affichage du résultat dans un msgbox
MsgBox TimeSerial(0, 0, MonResultat)

End Sub



@+ :)
Messages postés
100
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
27 juillet 2004

Effectivement, c'est plus court...

Je connaissais DateDiff pour l'avoir déjà utilisé mais je croyais que ça ne marchait que pour des dates.

Et j'ai réinventé la roue !

Merci et à +.

NuNu
Messages postés
19
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
25 juillet 2003

Ca marche!

Merci a tout les deux !!
Messages postés
406
Date d'inscription
lundi 2 décembre 2002
Statut
Membre
Dernière intervention
25 janvier 2014

Merci aussi a vous /

patrick