Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant,
Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59
Comment donner aux TB un format de DUREE ?
Merci
JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB1) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB1_Change()
CalculDurée
End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB2) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB2_Change()
CalculDurée
End Sub
Sub CalculDurée()
If IsDate(TB1) And IsDate(TB2) Then
TB3 = Format(((CDate(TB1)) * 24 * 60 _
+ CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm")
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour Jean Pierre,
essai avec ce format : "[h]:mm"
isabelle
Bonsoir,
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant, Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59 Comment donner aux TB un format de DUREE ? Merci JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB1) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB1_Change() CalculDurée End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB2) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB2_Change() CalculDurée End Sub
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) * 24 * 60 _ + CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm") End If End Sub
bonjour Jean Pierre,
essai avec ce format : "[h]:mm"
isabelle
Bonsoir,
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant,
Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59
Comment donner aux TB un format de DUREE ?
Merci
JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB1) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB1_Change()
CalculDurée
End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB2) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB2_Change()
CalculDurée
End Sub
Sub CalculDurée()
If IsDate(TB1) And IsDate(TB2) Then
TB3 = Format(((CDate(TB1)) * 24 * 60 _
+ CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm")
End If
End Sub
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant, Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59 Comment donner aux TB un format de DUREE ? Merci JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB1) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB1_Change() CalculDurée End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB2) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB2_Change() CalculDurée End Sub
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) * 24 * 60 _ + CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm") End If End Sub
Jean Pierre Belfort
J'ai essayé [h]:mm, mais ca ne marche pas, ca "cache" l'heure J'ai aussi essayé :
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) *100 * 60 _ + CDate(TB2) * 100 * 60) / (100 * 60), "hh:mm") End If End Sub Mais ca ne marche pas non plu
Que faire Isabelle? JPB
J'ai essayé [h]:mm, mais ca ne marche pas, ca "cache" l'heure
J'ai aussi essayé :
Sub CalculDurée()
If IsDate(TB1) And IsDate(TB2) Then
TB3 = Format(((CDate(TB1)) *100 * 60 _
+ CDate(TB2) * 100 * 60) / (100 * 60), "hh:mm")
End If
End Sub
Mais ca ne marche pas non plu
J'ai essayé [h]:mm, mais ca ne marche pas, ca "cache" l'heure J'ai aussi essayé :
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) *100 * 60 _ + CDate(TB2) * 100 * 60) / (100 * 60), "hh:mm") End If End Sub Mais ca ne marche pas non plu
Que faire Isabelle? JPB
JB
Bonjour,
-heures:minutes seulement -Pas testé totalement
http://cjoint.com/?iwjneDFeaI
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not estTemps(Me.TextBox1) Then MsgBox "Erreur saisie!" Cancel = True End If End Sub
Private Sub TextBox1_Change() Calcul End Sub
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not estTemps(Me.TextBox2) Then MsgBox "Erreur saisie!" Cancel = True End If End Sub
Private Sub TextBox2_Change() Calcul End Sub
Sub Calcul() If estTemps(Me.TextBox1) And estTemps(Me.TextBox2) Then ' Me.TextBox3 = Format(((ConvHeure(Me.TextBox1)) * 24 * 60 + ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60), "hh:mm") Me.TextBox3 = AfficheHeure(((ConvHeure(Me.TextBox1)) * 24 * 60 + ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60)) End If End Sub
Function AfficheHeure(temps) h = Int(temps * 24) m = Format(Int((temps - (h / 24)) * 60 * 24 + 0.00000001), "00") AfficheHeure = h & ":" & m End Function
Function estTemps(t) p = InStr(t, ":") m = Mid(t, p + 1) If p > 0 And Len(m) > 0 Then estTemps = True Else estTemps = False End Function
Function ConvHeure(t) p = InStr(t, ":") ConvHeure = Val(Left(t, p - 1)) / 24 + Val(Mid(t, p + 1)) / (24 * 60) End Function
JB
Bonsoir,
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant, Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59 Comment donner aux TB un format de DUREE ? Merci JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB1) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB1_Change() CalculDurée End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB2) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB2_Change() CalculDurée End Sub
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) * 24 * 60 _ + CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm") End If End Sub
Bonjour,
-heures:minutes seulement
-Pas testé totalement
http://cjoint.com/?iwjneDFeaI
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
If Not estTemps(Me.TextBox1) Then
MsgBox "Erreur saisie!"
Cancel = True
End If
End Sub
Private Sub TextBox1_Change()
Calcul
End Sub
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
If Not estTemps(Me.TextBox2) Then
MsgBox "Erreur saisie!"
Cancel = True
End If
End Sub
Private Sub TextBox2_Change()
Calcul
End Sub
Sub Calcul()
If estTemps(Me.TextBox1) And estTemps(Me.TextBox2) Then
' Me.TextBox3 = Format(((ConvHeure(Me.TextBox1)) * 24 * 60 +
ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60), "hh:mm")
Me.TextBox3 = AfficheHeure(((ConvHeure(Me.TextBox1)) * 24 * 60 +
ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60))
End If
End Sub
Function AfficheHeure(temps)
h = Int(temps * 24)
m = Format(Int((temps - (h / 24)) * 60 * 24 + 0.00000001), "00")
AfficheHeure = h & ":" & m
End Function
Function estTemps(t)
p = InStr(t, ":")
m = Mid(t, p + 1)
If p > 0 And Len(m) > 0 Then estTemps = True Else estTemps = False
End Function
Function ConvHeure(t)
p = InStr(t, ":")
ConvHeure = Val(Left(t, p - 1)) / 24 + Val(Mid(t, p + 1)) / (24 * 60)
End Function
JB
Bonsoir,
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant,
Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59
Comment donner aux TB un format de DUREE ?
Merci
JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB1) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB1_Change()
CalculDurée
End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TB2) Then
Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production")
Cancel = True
End If
End Sub
Private Sub TB2_Change()
CalculDurée
End Sub
Sub CalculDurée()
If IsDate(TB1) And IsDate(TB2) Then
TB3 = Format(((CDate(TB1)) * 24 * 60 _
+ CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm")
End If
End Sub
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not estTemps(Me.TextBox1) Then MsgBox "Erreur saisie!" Cancel = True End If End Sub
Private Sub TextBox1_Change() Calcul End Sub
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not estTemps(Me.TextBox2) Then MsgBox "Erreur saisie!" Cancel = True End If End Sub
Private Sub TextBox2_Change() Calcul End Sub
Sub Calcul() If estTemps(Me.TextBox1) And estTemps(Me.TextBox2) Then ' Me.TextBox3 = Format(((ConvHeure(Me.TextBox1)) * 24 * 60 + ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60), "hh:mm") Me.TextBox3 = AfficheHeure(((ConvHeure(Me.TextBox1)) * 24 * 60 + ConvHeure(Me.TextBox2) * 24 * 60) / (24 * 60)) End If End Sub
Function AfficheHeure(temps) h = Int(temps * 24) m = Format(Int((temps - (h / 24)) * 60 * 24 + 0.00000001), "00") AfficheHeure = h & ":" & m End Function
Function estTemps(t) p = InStr(t, ":") m = Mid(t, p + 1) If p > 0 And Len(m) > 0 Then estTemps = True Else estTemps = False End Function
Function ConvHeure(t) p = InStr(t, ":") ConvHeure = Val(Left(t, p - 1)) / 24 + Val(Mid(t, p + 1)) / (24 * 60) End Function
JB
Bonsoir,
Je fais un calcul de durées dans un UserForm selon le principe suivant :
TB1 + TB2 = TB3 exemple 0:15 + 29:15 = 29:30
Et donc maitre JB (et je pèse mes mots) m'a conseillé le code suivant, Mais j'obtiens des erreurs de saisie lorsque je dépasse 23:59 Comment donner aux TB un format de DUREE ? Merci JPB
Private Sub TB1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB1) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB1_Change() CalculDurée End Sub
Private Sub TB2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If Not IsDate(TB2) Then Msg = MsgBox("Saisie incorecte !", vbOKOnly, "Production") Cancel = True End If End Sub
Private Sub TB2_Change() CalculDurée End Sub
Sub CalculDurée() If IsDate(TB1) And IsDate(TB2) Then TB3 = Format(((CDate(TB1)) * 24 * 60 _ + CDate(TB2) * 24 * 60) / (24 * 60), "hh:mm") End If End Sub