Effectivement, Ajoute dans le code les lignes indiquees
.... .... End Select If Mois>12 then Mois <= Test mois>12 If Mois<>12 then JourMax=...... If Jour<=0 then jour=1 <= Test jour<=0 If Jour>JourMax Then ......
Et une autre erreur repérée
Quand on tape 1213 par exemple
Effectivement,
Ajoute dans le code les lignes indiquees
....
....
End Select
If Mois>12 then Mois <= Test mois>12
If Mois<>12 then JourMax=......
If Jour<=0 then jour=1 <= Test jour<=0
If Jour>JourMax Then ......
Effectivement, Ajoute dans le code les lignes indiquees
.... .... End Select If Mois>12 then Mois <= Test mois>12 If Mois<>12 then JourMax=...... If Jour<=0 then jour=1 <= Test jour<=0 If Jour>JourMax Then ......
Sub TextBox5_AfterUpdate() Dim jour As integer, mois As Integer, annee As Integer Dim JourMax As Integer jour = Day(Date) mois = month(Date) annee = Year(Date) JourMax = 31 Select Case Len(TextBox5.Value) Case Is = 5, 6 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4)) mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2)) annee = CInt(Right(TextBox5.Value, 2)) Case Is = 3, 4 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2)) mois = CInt(Right(TextBox5.Value, 2)) Case Is = 1, 2 jour = CInt(TextBox5.Value) End Select If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = CDate(jour & "/" & mois & "/" & annee) End sub
Tiens voila tout le code corrige
Sub TextBox5_AfterUpdate()
Dim jour As integer, mois As Integer, annee As Integer
Dim JourMax As Integer
jour = Day(Date)
mois = month(Date)
annee = Year(Date)
JourMax = 31
Select Case Len(TextBox5.Value)
Case Is = 5, 6
jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4))
mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2))
annee = CInt(Right(TextBox5.Value, 2))
Case Is = 3, 4
jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2))
mois = CInt(Right(TextBox5.Value, 2))
Case Is = 1, 2
jour = CInt(TextBox5.Value)
End Select
If mois > 12 Then mois = 12
If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" &
annee))
If jour <= 0 Then jour = 1
If jour > JourMax Then jour = JourMax
TextBox5.Value = CDate(jour & "/" & mois & "/" & annee)
End sub
Sub TextBox5_AfterUpdate() Dim jour As integer, mois As Integer, annee As Integer Dim JourMax As Integer jour = Day(Date) mois = month(Date) annee = Year(Date) JourMax = 31 Select Case Len(TextBox5.Value) Case Is = 5, 6 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4)) mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2)) annee = CInt(Right(TextBox5.Value, 2)) Case Is = 3, 4 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2)) mois = CInt(Right(TextBox5.Value, 2)) Case Is = 1, 2 jour = CInt(TextBox5.Value) End Select If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = CDate(jour & "/" & mois & "/" & annee) End sub
isabelle
bonjour David,
voici une autre approche, ________________________________________________________________________
à copier sur la page code du userform,
Private Sub TextBox1_Change() TextBox1 = LaDateISO(TextBox1) End Sub ________________________________________________________________________
à copier sur la page code d'un module standard,
Function LaDateISO(Tbox As MSForms.TextBox) 'Format aaaa/mm/jj Dim Nb As Integer, R As String, G As String Dim T As String, arr(), A As Integer arr = Array("/", "/", " ") T = Tbox For Each elt In arr T = Replace(T, elt, "") Next Nb = Len(T) If Nb > 8 Then Tbox = Left(Tbox, Len(Tbox) - 1) LaDateISO = Tbox Exit Function End If For A = 1 To Nb If IsNumeric(Mid(T, A, 1)) = True Then R = R & Mid(T, A, 1) End If Next If Nb >= 4 And Nb <= 6 Then G = Left(R, 4) & "/" & Right(R, Len(R) - 4) ElseIf Nb > 6 And Nb <= 8 Then G = Left(R, 4) & "/" & Mid(R, 5, 2) & "/" & Right(R, Len(R) - 6) Else G = R End If LaDateISO = G End Function ________________________________________________________________________
ou bien celle ci pour un format différent de date, (dans la procédure TextBox1_Change modifier LaDateISO par LaDate)
Function LaDate(Tbox As MSForms.TextBox) 'Format jj/mm/aaaa Dim Nb As Integer, R As String, G As String Dim T As String, arr(), A As Integer arr = Array("/", "/", " ") T = Tbox For Each elt In arr T = Replace(T, elt, "") Next Nb = Len(T) If Nb > 8 Then Tbox = Left(Tbox, Len(Tbox) - 1) LaDate = Tbox Exit Function End If For A = 1 To Nb If IsNumeric(Mid(T, A, 1)) = True Then R = R & Mid(T, A, 1) End If Next If Nb >= 2 And Nb <= 5 Then G = Left(R, 2) & "/" & Right(R, Len(R) - 2) ElseIf Nb > 5 And Nb <= 10 Then G = Left(R, 2) & "/" & Mid(R, 3, 2) & "/" & Right(R, Len(R) - 4) Else G = R End If LaDate = G End Function ________________________________________________________________________
isabelle
bonjour David,
voici une autre approche,
________________________________________________________________________
à copier sur la page code du userform,
Private Sub TextBox1_Change()
TextBox1 = LaDateISO(TextBox1)
End Sub
________________________________________________________________________
à copier sur la page code d'un module standard,
Function LaDateISO(Tbox As MSForms.TextBox)
'Format aaaa/mm/jj
Dim Nb As Integer, R As String, G As String
Dim T As String, arr(), A As Integer
arr = Array("/", "/", " ")
T = Tbox
For Each elt In arr
T = Replace(T, elt, "")
Next
Nb = Len(T)
If Nb > 8 Then
Tbox = Left(Tbox, Len(Tbox) - 1)
LaDateISO = Tbox
Exit Function
End If
For A = 1 To Nb
If IsNumeric(Mid(T, A, 1)) = True Then
R = R & Mid(T, A, 1)
End If
Next
If Nb >= 4 And Nb <= 6 Then
G = Left(R, 4) & "/" & Right(R, Len(R) - 4)
ElseIf Nb > 6 And Nb <= 8 Then
G = Left(R, 4) & "/" & Mid(R, 5, 2) & "/" & Right(R, Len(R) - 6)
Else
G = R
End If
LaDateISO = G
End Function
________________________________________________________________________
ou bien celle ci pour un format différent de date,
(dans la procédure TextBox1_Change modifier LaDateISO par LaDate)
Function LaDate(Tbox As MSForms.TextBox)
'Format jj/mm/aaaa
Dim Nb As Integer, R As String, G As String
Dim T As String, arr(), A As Integer
arr = Array("/", "/", " ")
T = Tbox
For Each elt In arr
T = Replace(T, elt, "")
Next
Nb = Len(T)
If Nb > 8 Then
Tbox = Left(Tbox, Len(Tbox) - 1)
LaDate = Tbox
Exit Function
End If
For A = 1 To Nb
If IsNumeric(Mid(T, A, 1)) = True Then
R = R & Mid(T, A, 1)
End If
Next
If Nb >= 2 And Nb <= 5 Then
G = Left(R, 2) & "/" & Right(R, Len(R) - 2)
ElseIf Nb > 5 And Nb <= 10 Then
G = Left(R, 2) & "/" & Mid(R, 3, 2) & "/" & Right(R, Len(R) - 4)
Else
G = R
End If
LaDate = G
End Function
________________________________________________________________________
voici une autre approche, ________________________________________________________________________
à copier sur la page code du userform,
Private Sub TextBox1_Change() TextBox1 = LaDateISO(TextBox1) End Sub ________________________________________________________________________
à copier sur la page code d'un module standard,
Function LaDateISO(Tbox As MSForms.TextBox) 'Format aaaa/mm/jj Dim Nb As Integer, R As String, G As String Dim T As String, arr(), A As Integer arr = Array("/", "/", " ") T = Tbox For Each elt In arr T = Replace(T, elt, "") Next Nb = Len(T) If Nb > 8 Then Tbox = Left(Tbox, Len(Tbox) - 1) LaDateISO = Tbox Exit Function End If For A = 1 To Nb If IsNumeric(Mid(T, A, 1)) = True Then R = R & Mid(T, A, 1) End If Next If Nb >= 4 And Nb <= 6 Then G = Left(R, 4) & "/" & Right(R, Len(R) - 4) ElseIf Nb > 6 And Nb <= 8 Then G = Left(R, 4) & "/" & Mid(R, 5, 2) & "/" & Right(R, Len(R) - 6) Else G = R End If LaDateISO = G End Function ________________________________________________________________________
ou bien celle ci pour un format différent de date, (dans la procédure TextBox1_Change modifier LaDateISO par LaDate)
Function LaDate(Tbox As MSForms.TextBox) 'Format jj/mm/aaaa Dim Nb As Integer, R As String, G As String Dim T As String, arr(), A As Integer arr = Array("/", "/", " ") T = Tbox For Each elt In arr T = Replace(T, elt, "") Next Nb = Len(T) If Nb > 8 Then Tbox = Left(Tbox, Len(Tbox) - 1) LaDate = Tbox Exit Function End If For A = 1 To Nb If IsNumeric(Mid(T, A, 1)) = True Then R = R & Mid(T, A, 1) End If Next If Nb >= 2 And Nb <= 5 Then G = Left(R, 2) & "/" & Right(R, Len(R) - 2) ElseIf Nb > 5 And Nb <= 10 Then G = Left(R, 2) & "/" & Mid(R, 3, 2) & "/" & Right(R, Len(R) - 4) Else G = R End If LaDate = G End Function ________________________________________________________________________
isabelle
David
Merci Ilan
Je vais voir ce que je fais car Isabelle me propose deux autres solutions.
Je test
Encore merci
Merci Ilan
Je vais voir ce que je fais car Isabelle me propose deux autres solutions.
Bonjour et merci Isabelle. Je c'est plus quoi faire.
Toute les solutions sont presque bonne mais c'est le presque qui me gène
Bonne soirée
David
Bonjour Ilan
1° je saisie une date, je quitte le textbox, je reviens sur le textbox pour pouvoir modifier par exemple le mois. Impossible, cela met le mois en cours.
2° je saisie une date, je quitte le textbox, je reviens sur le textbox pour supprimer la date. Impossible
Peut'on modifier ?
Merci de ton aide
David
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 Select Case Len(TextBox5.Value) Case Is = 5, 6 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4)) mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2)) annee = CInt(Right(TextBox5.Value, 2)) Case Is = 3, 4 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2)) mois = CInt(Right(TextBox5.Value, 2)) Case Is = 1, 2 jour = CInt(TextBox5.Value) End Select If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = CDate(jour & "/" & mois & "/" & annee) End Sub
Bonjour Ilan
1° je saisie une date, je quitte le textbox, je reviens sur le textbox pour
pouvoir modifier par exemple le mois. Impossible, cela met le mois en cours.
2° je saisie une date, je quitte le textbox, je reviens sur le textbox pour
supprimer la date. Impossible
Peut'on modifier ?
Merci de ton aide
David
Sub TextBox5_AfterUpdate()
Dim jour As Integer, mois As Integer, annee As Integer
Dim JourMax As Integer
jour = Day(Date)
mois = Month(Date)
annee = Year(Date)
JourMax = 31
Select Case Len(TextBox5.Value)
Case Is = 5, 6
jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4))
mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2))
annee = CInt(Right(TextBox5.Value, 2))
Case Is = 3, 4
jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2))
mois = CInt(Right(TextBox5.Value, 2))
Case Is = 1, 2
jour = CInt(TextBox5.Value)
End Select
If mois > 12 Then mois = 12
If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" &
annee))
If jour <= 0 Then jour = 1
If jour > JourMax Then jour = JourMax
TextBox5.Value = CDate(jour & "/" & mois & "/" & annee)
End Sub
1° je saisie une date, je quitte le textbox, je reviens sur le textbox pour pouvoir modifier par exemple le mois. Impossible, cela met le mois en cours.
2° je saisie une date, je quitte le textbox, je reviens sur le textbox pour supprimer la date. Impossible
Peut'on modifier ?
Merci de ton aide
David
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 Select Case Len(TextBox5.Value) Case Is = 5, 6 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 4)) mois = CInt(Mid(TextBox5.Value, Len(TextBox5.Value) - 3, 2)) annee = CInt(Right(TextBox5.Value, 2)) Case Is = 3, 4 jour = CInt(Left(TextBox5.Value, Len(TextBox5.Value) - 2)) mois = CInt(Right(TextBox5.Value, 2)) Case Is = 1, 2 jour = CInt(TextBox5.Value) End Select If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = CDate(jour & "/" & mois & "/" & annee) End Sub
Ilan
Bonjour David, Essaie l'ensemble du code suivant. Chez moi ca semble marcher correctement. Mais c'est a toi de voir.
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer Dim DateEntree As String Dim SepPos As Byte jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 DateEntree = TextBox5.Value SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) annee = CInt(DateEntree) Else mois = DateEntree End If Else jour = CInt(DateEntree) End If If mois = 0 Then mois = 1 If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy") End Sub
Private Sub TextBox5_Enter() TextBox5.MaxLength = 10 End Sub
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii <> 8 And KeyAscii <> 10 And KeyAscii <> 13 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0 Exit Sub Else If Len(TextBox5.Text) = 2 Or Len(TextBox5.Text) = 5 Then TextBox5.Text = TextBox5.Text + "/" End If End Sub
Bonjour David,
Essaie l'ensemble du code suivant.
Chez moi ca semble marcher correctement. Mais c'est a toi de voir.
Sub TextBox5_AfterUpdate()
Dim jour As Integer, mois As Integer, annee As Integer
Dim JourMax As Integer
Dim DateEntree As String
Dim SepPos As Byte
jour = Day(Date)
mois = Month(Date)
annee = Year(Date)
JourMax = 31
DateEntree = TextBox5.Value
SepPos = InStr(1, DateEntree, "/")
If SepPos > 0 Then
jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree =
Right(DateEntree, Len(DateEntree) - SepPos)
SepPos = InStr(1, DateEntree, "/")
If SepPos > 0 Then
mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree =
Right(DateEntree, Len(DateEntree) - SepPos)
annee = CInt(DateEntree)
Else
mois = DateEntree
End If
Else
jour = CInt(DateEntree)
End If
If mois = 0 Then mois = 1
If mois > 12 Then mois = 12
If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" &
annee))
If jour <= 0 Then jour = 1
If jour > JourMax Then jour = JourMax
TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy")
End Sub
Private Sub TextBox5_Enter()
TextBox5.MaxLength = 10
End Sub
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii <> 8 And KeyAscii <> 10 And KeyAscii <> 13 And (KeyAscii < 48 Or
KeyAscii > 57) Then
KeyAscii = 0
Exit Sub
Else
If Len(TextBox5.Text) = 2 Or Len(TextBox5.Text) = 5 Then TextBox5.Text
= TextBox5.Text + "/"
End If
End Sub
Bonjour David, Essaie l'ensemble du code suivant. Chez moi ca semble marcher correctement. Mais c'est a toi de voir.
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer Dim DateEntree As String Dim SepPos As Byte jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 DateEntree = TextBox5.Value SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) annee = CInt(DateEntree) Else mois = DateEntree End If Else jour = CInt(DateEntree) End If If mois = 0 Then mois = 1 If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy") End Sub
Private Sub TextBox5_Enter() TextBox5.MaxLength = 10 End Sub
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii <> 8 And KeyAscii <> 10 And KeyAscii <> 13 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0 Exit Sub Else If Len(TextBox5.Text) = 2 Or Len(TextBox5.Text) = 5 Then TextBox5.Text = TextBox5.Text + "/" End If End Sub
David
Bonjour Ilan
Une nouvelle fois, merci pour ton aide
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)
Désolé de te donner autant de travail
Encore merci
David
Bonjour Ilan
Une nouvelle fois, merci pour ton aide
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)
Désolé de te donner autant de travail
Encore merci
David
Ilan
Ouaip, effectivement
Remplace la procedure TextBox5_AfterUpDate par celle-ci
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer Dim DateEntree As String Dim SepPos As Byte jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 DateEntree = TextBox5.Value If Len(DateEntree) > 0 Then SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) annee = CInt(DateEntree) Else mois = DateEntree End If Else jour = CInt(DateEntree) End If End If If mois <= 0 Then mois = 1 If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy") End Sub
Bonjour Ilan
Une nouvelle fois, merci pour ton aide
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)
Désolé de te donner autant de travail
Encore merci
David
Ouaip, effectivement
Remplace la procedure TextBox5_AfterUpDate par celle-ci
Sub TextBox5_AfterUpdate()
Dim jour As Integer, mois As Integer, annee As Integer
Dim JourMax As Integer
Dim DateEntree As String
Dim SepPos As Byte
jour = Day(Date)
mois = Month(Date)
annee = Year(Date)
JourMax = 31
DateEntree = TextBox5.Value
If Len(DateEntree) > 0 Then
SepPos = InStr(1, DateEntree, "/")
If SepPos > 0 Then
jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree =
Right(DateEntree, Len(DateEntree) - SepPos)
SepPos = InStr(1, DateEntree, "/")
If SepPos > 0 Then
mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree =
Right(DateEntree, Len(DateEntree) - SepPos)
annee = CInt(DateEntree)
Else
mois = DateEntree
End If
Else
jour = CInt(DateEntree)
End If
End If
If mois <= 0 Then mois = 1
If mois > 12 Then mois = 12
If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" &
annee))
If jour <= 0 Then jour = 1
If jour > JourMax Then jour = JourMax
TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy")
End Sub
Bonjour Ilan
Une nouvelle fois, merci pour ton aide
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)
Remplace la procedure TextBox5_AfterUpDate par celle-ci
Sub TextBox5_AfterUpdate() Dim jour As Integer, mois As Integer, annee As Integer Dim JourMax As Integer Dim DateEntree As String Dim SepPos As Byte jour = Day(Date) mois = Month(Date) annee = Year(Date) JourMax = 31 DateEntree = TextBox5.Value If Len(DateEntree) > 0 Then SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then jour = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) SepPos = InStr(1, DateEntree, "/") If SepPos > 0 Then mois = CInt(Left(DateEntree, SepPos - 1)): DateEntree = Right(DateEntree, Len(DateEntree) - SepPos) annee = CInt(DateEntree) Else mois = DateEntree End If Else jour = CInt(DateEntree) End If End If If mois <= 0 Then mois = 1 If mois > 12 Then mois = 12 If mois <> 12 Then JourMax = Day(DateAdd("d", -1, "01/" & mois + 1 & "/" & annee)) If jour <= 0 Then jour = 1 If jour > JourMax Then jour = JourMax TextBox5.Value = Format(jour & "/" & mois & "/" & annee, "dd/mm/yyyy") End Sub
Bonjour Ilan
Une nouvelle fois, merci pour ton aide
Encore une petite erreur mais je pense que tu n'est pas loin.
Si je rentre une date et que je reviens pour l'effacer cela met
incompatilité de type erreur 13 à cette ligne: jour = CInt(DateEntree)