Textbox date comprise entre ....

Fermé
sysywa Messages postés 1 Date d'inscription vendredi 27 mai 2016 Statut Membre Dernière intervention 27 mai 2016 - 27 mai 2016 à 11:33
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 13 juin 2016 à 16:53
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
27 mai 2016 à 11:58
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
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523 > sysywa
30 mai 2016 à 15:50
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
13 juin 2016 à 14:57
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
13 juin 2016 à 16:53
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