Textbox date comprise entre ....

sysywa Messages postés 1 Statut Membre -  
f894009 Messages postés 17417 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

  1. Gyrus Messages postés 3360 Statut Membre 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
    1. 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
      1. Gyrus Messages postés 3360 Statut Membre 526 > sysywa
         
        Je ne vois pas la différence avec ma proposition.
        Mais "Gentil n'a qu'un œil !"

        A+
        0
      2. sysywame > Gyrus Messages postés 3360 Statut Membre
         
        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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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