Soustraire des heures

jeromebd73 Messages postés 1 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 10 janvier 2008 - 10 janv. 2008 à 18:32
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 - 10 janv. 2008 à 22:14
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

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 janv. 2008 à 20:28
Tiens !
VBS, c'est maintenent devenu VB.Net .... ???
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
10 janv. 2008 à 20:49
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
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 janv. 2008 à 21:01
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 ....
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
10 janv. 2008 à 21:18
 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
0

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

Posez votre question
zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
10 janv. 2008 à 22:14
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 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]
0
Rejoignez-nous