Somme d'heures avec TextBox

MuscatMimi

XLDnaute Accro
Bonjour au Forum

Je désire Faire la Somme de quatre Tbx ,avec résultat dans une autre Tbx

Tbx5 = 19:00
+
Tbx6 = 08:00
+
Tbx7 = 10:00
+
Tbx8 = 05:00
=
Tbx1 42:00


Avec le code ci-dessous j'otiens que 12:00, comprends pas
'--Calcul de la Somme des Tbx 5,6,7,8 dans Tbx1
Private Sub TTR()

Dim H5 As Date
Dim H6 As Date
Dim H7 As Date
Dim H8 As Date

On Error Resume Next
H5 = CDate(TextBox5.Value)
H6 = CDate(TextBox6.Value)
H7 = CDate(TextBox7.Value)
H8 = CDate(TextBox8.Value)

'--Calcul
TextBox1.Value = CDate(H5 + H6 + H7 + H8)
TextBox1.Value = Format(TextBox1, "h:mm")

End Sub
J'attends vos réponses
et vous remercie a l'avance
Cordialement
 

job75

XLDnaute Barbatruc
Re : Somme d'heures avec TextBox

Bonjour Vaucluse, le forum,

En théorie il faudrait utiliser le format [h]:mm, mais il se trouve que VBA ne reconnaît pas ce format (c'est une de ses lacunes).

Donc il faut se débrouiller. Voyez le code :

Code:
Dim H5 As Date, H6 As Date, H7 As Date, H8 As Date
Dim s As Double, h$, m$
On Error Resume Next
H5 = CDate(TextBox5)
H6 = CDate(TextBox6)
H7 = CDate(TextBox7)
H8 = CDate(TextBox8)
s = H5 + H6 + H7 + H8
h = Format(s * 24, "0") 'heures
m = Format(s * 1440 - h * 60, "00") 'minutes
TextBox1 = h & ":" & m

A+
 

job75

XLDnaute Barbatruc
Re : Somme d'heures avec TextBox

Re,

Aïe, j'oubliais que Format pouvait arrondir au-dessus, utiliser donc :

Code:
Dim H5 As Date, H6 As Date, H7 As Date, H8 As Date
Dim s As Double, h [COLOR="Red"]As Long[/COLOR], m$
On Error Resume Next
H5 = CDate(TextBox5)
H6 = CDate(TextBox6)
H7 = CDate(TextBox7)
H8 = CDate(TextBox8)
s = H5 + H6 + H7 + H8
h = [COLOR="Red"]Int(CDec(s * 24))[/COLOR] 'heures
m = Format(s * 1440 - h * 60, "00") 'minutes
TextBox1 = h & ":" & m

Edit : si vous vous demandez pourquoi j'utilise CDec, voyez ce fil :

https://www.excel-downloads.com/threads/fonction-int-pour-les-vbaistes.117085/

A+
 
Dernière édition:

MuscatMimi

XLDnaute Accro
Re : Somme d'heures avec TextBox

Bonjour job75

Bravo, belle procédure que tu a faite, ça fonctionne nickel

Par contre , comme le Format contourné "hh:mm" en "[h]:mm"

ça me fausse une autre procédure de Calcul "Heure multiplié par Euros",
qui est

CODE
'If TextBox1 > 35 Then '*
'TextBox9 = CDate(TextBox1) * CCur(TextBox2)
'TextBox9 = Format(TextBox9, "# ##0.00 €")
'End If

A plus ,et bon Week-end


La je vois pas comment faire, je viens d'essayer plusieurs version de Code mais en vain
aurait-tu une idées???
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Somme d'heures avec TextBox

Re,

Je suppose que vous voulez ça :

Code:
Dim v As Double
On Error Resume Next
v = Split(TextBox1, ":")(0) + Split(TextBox1, ":")(1) / 60
If v > 35 Then
TextBox9 = v * Val(Replace(TextBox2, ",", ".")) 'ainsi on peut utiliser le point ou la virgule dans TextBox2
TextBox9 = Format(TextBox9, "# ##0.00 €")
End If

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 506
Membres
103 566
dernier inscrit
c@b@l77540