Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul le nombre de jour dans un userform

5 réponses
Avatar
Fredo(67)
Bonjour,
j'ai cr=E9=E9 un userform
celui ci contient 3 textbox
Textbox1 : date de d=E9part
Textbox2 : date de retour
Textbox3 : diff=E9rence entre les 2 dates

J'ai mis ceci comme code des textbox 1 et 2

Private Sub TextBox1_Change()
TextBox3.Value =3D Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

et

Private Sub TextBox2_Change()
TextBox3.Value =3D Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

Cela marche quand j'utilise des nombre, mais pas avec les dates.

Comment faire ?

merci

5 réponses

Avatar
michdenis
Remplace


TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)

Par

TextBox3.Value = Cdate(TextBox1.Value) - Cdate(TextBox2.Value)

Évidemment, je prends pour acquis que tu as vraiment dans les
textbox1 et 2 des entrées reconnues comme des formats de date
acceptable par excel.

Sinon, tu peux toujours tester :
if isdate(textbox1.value) and isdate(Textbox2.value) then
TextBox3.Value = Cdate(TextBox1.Value) - Cdate(TextBox2.Value)
Else
Msgbox "problème avec le contenu des textbox... pas des dates"
End if





"Fredo(67)" a écrit dans le message de news:

Bonjour,
j'ai créé un userform
celui ci contient 3 textbox
Textbox1 : date de départ
Textbox2 : date de retour
Textbox3 : différence entre les 2 dates

J'ai mis ceci comme code des textbox 1 et 2

Private Sub TextBox1_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

et

Private Sub TextBox2_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

Cela marche quand j'utilise des nombre, mais pas avec les dates.

Comment faire ?

merci
Avatar
lSteph
Bonjour,

Choisir celle qui te convient (date saisie au format dd/mm/yyyy)

'durée en jours:
Private Sub TextBox2_AfterUpdate()
TextBox3 = DateValue(TextBox2) - DateValue(TextBox1) + 1
End Sub

'différence en jour
Private Sub TextBox2_AfterUpdate()
TextBox3 = DateValue(TextBox2) - DateValue(TextBox1)
End Sub


'lSteph

On 13 août, 16:03, "Fredo(67)" wrote:
Bonjour,
j'ai créé un userform
celui ci contient 3 textbox
Textbox1 : date de départ
Textbox2 : date de retour
Textbox3 : différence entre les 2 dates

J'ai mis ceci comme code des textbox 1 et 2

Private Sub TextBox1_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

et

Private Sub TextBox2_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

Cela marche quand j'utilise des nombre, mais pas avec les dates.

Comment faire ?

merci


Avatar
Fredo(67)
Merci à vous deux

J'ai mis en place la solution de ISteph, et cela fonctionne

je testerai plus tard la solution de Michdenis

Encore merci,

je peux maintenant me pencher sur la suite de ma macro
Avatar
lSteph
..pour calculer en jours une durée (mettre le +1) ou différence (ne
pas le mettre) ,
je prends plutôt la date la plus récente de laquelle
j'enlève la plus ancienne ce qui me donnera positivement le résultat
cela fait 6 jours par exemple
et non pas cela fait moins 6jours
Voici rectifié pour les cas d'erreur de saisie date:

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
On Error GoTo fin
TextBox1 = Format(CDate(TextBox1), "dd/mm/yyyy")
Exit Sub
fin:
On Error GoTo 0
Cancel = True
TextBox1.SetFocus: MsgBox "une date"
End Sub



Private Sub TextBox2_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
On Error GoTo fin
TextBox2 = Format(CDate(TextBox2), "dd/mm/yyyy")
Exit Sub
fin:
On Error GoTo 0
Cancel = True
TextBox2.SetFocus: MsgBox "une date"
End Sub


Private Sub TextBox2_AfterUpdate()
TextBox3 = DateValue(TextBox2) - DateValue(TextBox1) + 1
End Sub

'lSteph


On 13 août, 16:03, "Fredo(67)" wrote:
Bonjour,
j'ai créé un userform
celui ci contient 3 textbox
Textbox1 : date de départ
Textbox2 : date de retour
Textbox3 : différence entre les 2 dates

J'ai mis ceci comme code des textbox 1 et 2

Private Sub TextBox1_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

et

Private Sub TextBox2_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

Cela marche quand j'utilise des nombre, mais pas avec les dates.

Comment faire ?

merci


Avatar
LE TROLL
Bonjour,

Et en Passant par l'intermédiaire de variable date, schématiquement :

dim debut as date
dim fin as date
dim diff as long
debut=text1
fin=text2
diff = fin - debut
text3=diff

Normalement on n'utilise pas directement les objets pour calculer, car selon
les objets ce ne serait pas pareil (un labelBox par exemple)...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Fredo(67)" a écrit dans le message de news:

Bonjour,
j'ai créé un userform
celui ci contient 3 textbox
Textbox1 : date de départ
Textbox2 : date de retour
Textbox3 : différence entre les 2 dates

J'ai mis ceci comme code des textbox 1 et 2

Private Sub TextBox1_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

et

Private Sub TextBox2_Change()
TextBox3.Value = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub

Cela marche quand j'utilise des nombre, mais pas avec les dates.

Comment faire ?

merci