Operations sur les heures!

cs_juste Messages postés 19 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 25 juillet 2003 - 17 juil. 2002 à 15:41
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014 - 20 oct. 2008 à 00:30
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

cs_NuNu Messages postés 100 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 27 juillet 2004
17 juil. 2002 à 17:54
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
0
DragonDo Messages postés 93 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 22 juillet 2006
17 juil. 2002 à 18:10
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



@+ :)
0
cs_NuNu Messages postés 100 Date d'inscription mercredi 29 mai 2002 Statut Membre Dernière intervention 27 juillet 2004
17 juil. 2002 à 18:17
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
0
cs_juste Messages postés 19 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 25 juillet 2003
18 juil. 2002 à 08:39
Ca marche!

Merci a tout les deux !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_clementpat Messages postés 406 Date d'inscription lundi 2 décembre 2002 Statut Membre Dernière intervention 25 janvier 2014
20 oct. 2008 à 00:30
Merci aussi a vous /

patrick
0
Rejoignez-nous