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

Messages postés
5
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
1 juin 2009
- - Dernière réponse : Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- 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 

5 réponses

Meilleure réponse
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmf0
Messages postés
5
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
1 juin 2009
0
Merci
hh : mm correspond à heure minutes, faut que je remplace par hh:nn?
Commenter la réponse de dambreville
Messages postés
5
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
1 juin 2009
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
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56
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