Soustraire des heures

Signaler
Messages postés
1
Date d'inscription
mercredi 21 juin 2006
Statut
Membre
Dernière intervention
10 janvier 2008
-
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
-
Bonjour. Je fait mes premiers pas sur VBS et j'essaie d'écrire un programme pour soustraire des heures tel que:
1° on saisit une heure au format hh:mm
2° On saisit une deuxième heure au meme format
3° Un MsgBOx apparait avec l'égart de temps (format hh:mm)entre les deux.
Quelle fonction doit-je utiliser?avec quelle syntaxe?
Voilà ce que j'ai fais mais ça ne fonctionne pas.
Merci d'avance.

Dim ha,heure_arriver
ha = InputBox("Saisir une heure","heure d'arriver")
heure_arriver = TimeValue (ha)
Dim hd,heure_depart
hd = InputBox("Saisir une heure"," Heure départ")
heure_depart = TimeValue (hd)
dim d,deplacement
d = (hd-ha)
MsgBox d,,"premier déplacement"

5 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Tiens !
VBS, c'est maintenent devenu VB.Net .... ???
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonsoir,

Ce raisonnement implique que les heures soient effectuées sur la même journée.

Dim ha, hd
ha = CDate(InputBox("Saisir une heure","heure d'arrivée","8:10"))
hd = CDate(InputBox("Saisir une heure","heure de départ","17:05"))

MsgBox Replace(FormatDateTime(TimeSerial(Hour(hd) - Hour(ha), _
               Minute(hd) - Minute(ha), 0),vbShortTime),":","h")

jean-marc
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Oui, bien sur ...

ceci marche bien également :

Private Sub Command1_Click()
  MsgBox DateDiff("h", "01/01/2001 10:00:00", "01/01/2002 10:00:00")
End Sub

Mais ce n'est ni du VBS ni (je n'en sais d'ailleurs absolument rien) du VB.NET ....
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonsoir Jacques,

ou même
Dim date1, date2
date1 = Now
date2 = DateAdd("n",-30, date1)
MsgBox date1 &vbCr& date2 &vbCr&_
       DateDiff("n", date1, date2) &vbCr&vbcr&_
       Replace(FormatDateTime(TimeSerial(8 - 6, -15, 0),vbShortTime),":","h")

le datediff avec "h" sera incomplet, il ne prendra pas en compte hh:mn
l'utilisation du datediff avec "n" implique une transformation du résultat en hh:mn
J'ai adopté le dateserial avec formatdatetime.

pour [auteur/JEROMEBD73/805511.aspx jeromebd73]: attention à vérifier la saisie des inputboxs.
Les 2 variables doivent accepter le CDate [voir fonction IsDate].

jean-marc
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Fonction     : calcInterval
' Description  : Calcul un interval
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Autheur      : Julien Bonnier
' Date         : 12 decembre 2006
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Input        : TIME IN SECS
' Output       : INTERVAL
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Modifications:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function calcInterval(time As Long) As String
    Dim s As Long            'secondes   (0)
    Dim m As Long            'minutes    (1)
    Dim h As Long            'heures     (2)
    Dim tmp As Variant
    Dim t As String
    Dim ta() As String
   
    If time < 60 Then
        s = time
    ElseIf time > 60 And time < 3600 Then
        tmp = time / 60
        ta() = Split(tmp, ".")
        m = ta(0)
        s = Round((Left(ta(1), 2) / 100) * 60, 0)
    ElseIf time > 3600 Then
        h = time / 3600
        ta() = Split(h, ".")
        h = ta(0)
        time = time - (h * 3600)
        tmp = time / 60
        ta() = Split(tmp, ".")
        m = ta(0)
        s = Round(ta(1) * 60, 0)
    End If
   
    t = IIf(h > 0, h & "h", "") & IIf(m > 0, m & "m", "") & s & "s"
    calcInterval = t
End Function

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]