Textbox date comprise entre ....

sysywa Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je souhaite dans un textbox où l'on saisit une date faire en sorte que celle-ci soit comprise entre le 1er janvier 2013 et le 31 décembre 2026.
J'ai écrit ceci qui ne fonctionne pas :

Private Sub TextBox51_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox51) Then
If MsgBox("date de demande non valide", vbOKOnly, "Veuillez ressaisir ce champs") = vbOK Then
TextBox51 = ""
Me.TextBox51.SetFocus
End If
End If
TextBox51.Value = Format(TextBox51, "dd/mm/yyyy")
If CDate(TextBox51) > CDate("01/01/2013") And CDate(TextBox51) > CDate("31/12/2026") Then
If MsgBox("date de demande non valide", vbOKOnly, "Veuillez ressaisir ce champs") = vbOK Then
TextBox51 = ""
Me.TextBox51.SetFocus
End If
End If
End Sub

Merci par avance pour votre aide ...

2 réponses

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

Private Sub TextBox51_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox51) Then
If CDate(TextBox51) < CDate("01/01/2013") Or CDate(TextBox51) > CDate("31/12/2026") Then
If MsgBox("La saisie ne correspond pas à une date valide." & Chr(10) & _
"(Période autorisée : du 01/01/2013 au 31/12/2026)" & Chr(10) & Chr(10) & _
"Veuillez ressaisir ce champ.", vbOKOnly, "ERREUR DE SAISIE") = vbOK Then
TextBox51 = ""
Me.TextBox51.SetFocus
End If
Else
TextBox51.Value = Format(TextBox51, "dd/mm/yyyy")
End If
Else
If MsgBox("La valeur saisie doit correspondre à une date." & Chr(10) & "Veuillez ressaisir ce champ.", vbOKOnly, "ERREUR DE SAISIE") = vbOK Then
TextBox51 = ""
Me.TextBox51.SetFocus
End If
End If
End Sub


A+
0
sysywa
 
C'est gentil mais c'est pas là qu'est le plantage ...
C'est ceci qui ne fonctionne pas :
If CDate(TextBox51) < CDate("01/01/2013") Or CDate(TextBox51) > CDate("31/12/2026")
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > sysywa
 
Je ne vois pas la différence avec ma proposition.
Mais "Gentil n'a qu'un œil !"

A+
0
sysywame > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
Et "Gentil" tente désespérément de regarder avec l’œil qui ne voit pas ... hahaha !!!
Je réitère donc ma question. J'ai dû mal m'exprimer ^_^ ...

Qu'est ce qui ne va pas dans :

If CDate(TextBox51) < CDate("01/01/2013") Or CDate(TextBox51) > CDate("31/12/2026")

car ça ne fonctionne pas.

Je souhaite que les gens qui saisissent le textbox ne puissent pas rentrer de valeur inférieures au 01/01/2013 ou supérieures au 21/12/2026

Suis-je plus claire ?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour a vous tous,

Formatage date (ex:01/01/2016) pas besoin de mettre les "/" et control temps reel de la saisie

'control date
Private Sub TextBox51_Change()
    If Len(TextBox51) = 10 Then
        If (CDate(TextBox51) < CDate("01/01/2013") Or CDate(TextBox51) > CDate("01/12/2026")) Then
            MsgBox "date de demande non valide", vbOKOnly, "Veuillez ressaisir ce champs"
            TextBox51 = ""
            Me.TextBox51.SetFocus
        End If
    End If
End Sub

'control entree avec format date
Private Sub Textbox51_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    TextBox51.MaxLength = 10
    Select Case KeyAscii
        Case 46, 48 To 57
            ' 01/04/2016
            VT = Len(TextBox51)
            If VT = 2 Or VT = 5 Then TextBox51 = TextBox51 & "/"
        Case Else
            KeyAscii = 0
            MsgBox "Only numbers allowed"
    End Select
End Sub
0