Calcul heures dans textbox sous vba excel [Résolu]

dambreville 5 Messages postés mardi 24 mars 2009Date d'inscription 1 juin 2009 Dernière intervention - 22 mai 2009 à 12:32 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 22 mai 2009 à 15:28
bonjour à tous,

je coince sur mon code qui veut pas marcher;

J'ai 3 textbox qui reçoivent des heures et des minutes
textbox797 heure arrivée
textbox 798 heure départ
textbox811 résultat (textbox798 - textbox 797)
j'ai réussi  dans les textbox 797 et 798 à faire afficher l'heure en "hh : mm"
j'ai un souci avec le textbox811 qui ne m'affiche pas le résultat (il m'affiche 0)


code textbox797





<hr />
Private Sub TextBox797_AfterUpdate()
Dim H1 As Date
  Dim H2 As Date  H1 CDate(TextBox797.Value "hh:mm")  H2 CDate(TextBox798.Value "hh:mm")
  TextBox811.Value = H2 - H1
End Sub

code  textbox798
<hr />
Private Sub TextBox798_AfterUpdate()
Dim H1 As Date
  Dim H2 As Date  H1 CDate(TextBox797.Value "hh:mm")  H2 CDate(TextBox798.Value "hh:mm")
  TextBox811.Value = H2 - H1
End Sub

code textbox811
<hr />Private Sub TextBox811_AfterUpdate()
Dim H1 As Date
  Dim H2 As Date  H1 CDate(TextBox797.Value "hh:mm")  H2 CDate(TextBox798.Value "hh:mm")
  TextBox811.Value = Format(H2 - H1, "hh:mm")
End Sub

Pouvez vous me donner un coup de main
merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 22 mai 2009 à 14:30
3
Merci
hh:mm ?

heure:mois

essaye avec des n, ca ira mieux "hh:nn"

par contre, cette syntaxe:
CDate(TextBox797.Value = "hh:mm")
est completement inédite, felicitations, j'avais jamais vu personne le faire.

syntaxe, bien evidemment a oublier rapidementTu faus simplement un CDate(0) ici...

Merci Renfield 3

codes-sources a aidé 78 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 22 mai 2009 à 15:14
3
Merci
Bonjour,

Le développement n'est pas du code écrit "au hasard des caprices", mais doit nécessairement s'appuyer très précisément sur la syntaxe prévue pour la langage que l'on utilise. L'aide en ligne est là pour celà et doit être consultée régulièrement.

Une durée (temps écopulé entre deux instants) n'est pas une heure (l'heure qu'il est) ...

Intéresse-toi sans attendre à la fonction DateDiff...

Merci jmf0 3

codes-sources a aidé 78 internautes ce mois-ci

Commenter la réponse de jmf0
dambreville 5 Messages postés mardi 24 mars 2009Date d'inscription 1 juin 2009 Dernière intervention - 22 mai 2009 à 14:35
0
Merci
hh : mm correspond à heure minutes, faut que je remplace par hh:nn?
Commenter la réponse de dambreville
dambreville 5 Messages postés mardi 24 mars 2009Date d'inscription 1 juin 2009 Dernière intervention - 22 mai 2009 à 14:39
0
Merci
en fait je voudrais que dans ma textbox811 apparaisse le resultat de ma textbox798 moins ma textbox797(qui sont toutes les 2 en heure : minute) et que mon resultat soit également en heure : minute


quand par exemple j'écris 10:30 ddans ma textbox 797, ca m'écris bien 10:30


11:30 dans ma textbox798, également


mais dans ma textbox811, ca m'écris 0
Commenter la réponse de dambreville
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 22 mai 2009 à 15:28
0
Merci
t'as rien lu, en fait ?

H1 CDate(TextBox797.Value "hh:mm")

c'est du grand n'importe quoi

découpons

TextBox797.Value = "hh:mm"

ici, un test entre deux chaines de caractère.
un test ? oui, ca renverra donc un boolean (0 ou -1)

ce test, ici, renverra False soit 0
CDate(0) => renvoit donc 0

alors:

H1 CDate(TextBox797.Value "hh:mm")
H2 CDate(TextBox798.Value "hh:mm")
TextBox811.Value = Format(H2 - H1, "hh:mm")

H1 => 0
H2 => 0
TextBox811 contient donc Format(0, "hh:mm")

et je le redis: pour Format, mm concerne le Mois et non les minutes



faire, donc (après avoir bien lu, et sans valider la réponse pour la forme)

Private Sub TextBox811_AfterUpdate()
Dim Delta As Long
If IsDate(TextBox797.Value) And IsDate(TextBox798.Value) Then
Delta = DateDiff("n", CDate(TextBox798.Value), CDate(TextBox797.Value))
TextBox811.Value = FormatDateTime(TimeSerial(0,Delta,0), vbShortTime)
End If
End Sub
Commenter la réponse de Renfield

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.