VBA addition d'heure supéreur à 24h00

Bonjour,

Je dispose de 3 Textbox

les 2 premiers je note des heures, le 3èm les additionnent.

je me retrouve avec ceci :

With Me
   .TextBox3=format(cdate(.TextBox1)+cdate(.textbox2),"hh:mm")
End With

Ca fonctionne sauf si je dépasse les 24h00.

comment faire si je veux additionner 18:00+:18:00 par exemple et afficher 36:00 ???

En notant le résultat dans un cellule et le reprenant ça fonctionne mais tout en vba ???

Je tourne en rond.

Bonjour,

Essaye ceci

With Me
   .TextBox3=format(cdate(.TextBox1)+cdate(.textbox2),"[hh]:mm")
End With

en mettant des [] autour des hh

Bonjour Steelson, ce format ne fonctionne pas en vba, j'avais déjà tenté le coup sans succès.

bonjour,

une idée :

Private Sub TextBox2_AfterUpdate()
  Dim H1 As Date
  Dim H2 As Date
  H1 = CDate(TextBox1.Value)
  H2 = CDate(TextBox2.Value)
  TextBox3.Value = Format(H1 + H2, "hh:mm")
End Sub

En fait les textbox sont des "textes", alors pour les additionner mieux vaut les convertir en valeur date et ensuite une fois additionnés, les reconvertir en texte...

Faut voir

@ bientôt

LouReeD

Bonjour LouReeD

Et bien au lieu de 36h00, j'obtiens 12h00.

Ce qui est logique puisque ca fait bien 1 journée + 12h00.

Je trouve bizarre qu'il n'y a pas de format prévu pour ce cas...

En écrivant comme ceci et en prenant soin d'avoir formater la cellule A1 [h]:mm

With Me
   sheets(1).cells(1,1)=cdate(.TextBox1)+cdate(.textbox2)
   .TextBox3=sheets(1).cells(1,1).text
End With

Mais si quelqu'un à la solution écrite totalement en vba sans utiliser de cellule je suis preneur.

Re bonjour,

Un autre test :

Private Sub TextBox2_AfterUpdate()
Dim H1 As Date
Dim H2 As Date
Dim Heure As Date
Dim Hh As Double
Dim Mm As Double
H1 = CDate(TextBox1.Value)
H2 = CDate(TextBox2.Value)
Heure = H1+H2
Mm = Heure- Int(Heure)
Hh = Heure * 24
TextBox3.Value = Int(Hh) & ":" & Int(Mn * 60)
End Sub

Je ne l'ai pas testé...

@ bientôt

LouReeD

Merci LouReeD,

Ca avance, pour l'heure ça fonctionne mais pas pour les minutes, elles restent à 0.

Bonjour,

Peut-être :

TextBox3.Value = Int(Hh) & ":" & Int(Mn * 60 * 24)

Pas testé non plus...

eric

Bonjour

a tester

Private Sub calc_h()
Dim Date1 As Date
Dim Date2 As Date
If TextBox1 = "" Then
MsgBox "La première heure doit être entrée !!"
Else
Date1 = Replace(TextBox1, "h", ":")
Date2 = Replace(TextBox2, "h", ":")
TextBox3 = CDate(Date2 + Date1)
End If
End Sub

Merci messieurs, mais toujours pas.

Ci joint le fichier avec le résultat d'eriiic et de LouReeD.

richi2casa, ce n'est pas possible avec cdate, car il va systématiquement prendre la journée d'après et je n'obtiendrai pas le résultat souhaité.

18fred35-h24.zip (13.92 Ko)

Re,

à tester :

Private Sub TextBox2_AfterUpdate()
    Dim H1 As Date, H2 As Date, Heure As Double
    Dim Hh As Double, Mn As Double

    H1 = CDate(TextBox1.Value)
    H2 = CDate(TextBox2.Value)
    Heure = (H1 + H2) * 24
    Hh = Int(Heure)
    Mn = ((Heure) - Hh) * 60
    TextBox3.Value = Hh & ":" & Format(Mn, "00")
End Sub

eric

Bonjour,

Une tentative.

Cdlt.

Option Explicit

Private Sub TextBox2_AfterUpdate()
Dim H1 As Date, H2 As Date
Dim Heure As Double, Hh As Double, Mn As Double

    H1 = TimeValue(TextBox1.Value)
    H2 = TimeValue(TextBox2.Value)
    Heure = CDbl((H1 + H2) * 24)
    Hh = Int(Heure)
    Mn = (Heure - Hh) * 60
    TextBox3.Value = ""
    TextBox4.Value = Hh & ":" & Format(Mn, "00")

End Sub

Niquel Eriiic et Jean Eric vos méthodes fonctionnent parfaitement

Merci à vous 2

BONJOUR

A Tester

Private Sub CommandButton1_Click()
x1 = CDate(TextBox1)
x2 = CDate(TextBox2)

x = x1 + x2 
y = Int(x) * 24
Z = Format(x - Int(x), "Hh:mm")
MsgBox (y + Split(Z, ":")(0) & ":" & Split(Z, ":")(1))
Me.TextBox3 = y + Split(Z, ":")(0) & ":" & Split(Z, ":")(1)
End Sub

CDlt

Rechercher des sujets similaires à "vba addition heure supereur 24h00"