Date for vba excel

Résolu
Bonjour,

je ne parviens pas à vérifier si les données entrées dans la textbox3 sont une date au bon format ni à vérifier si la date entrée est égale ou différente de celle du jour

pouvez vous m'aider ?

merci

ci-joint mon fichier

https://www.cjoint.com/c/FBsllLgxxuv

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Date: jj/mm/aaaa
    Now: jj/mm/aa hh:mm:ss

    Private Sub TextBox3_exit(ByVal cancel As MSForms.ReturnBoolean)
        Dim datepiece
        
        datepiece = CDate(TextBox3.Value)
         If Not IsDate(datepiece) Then
              MsgBox "Format date pas bon", vbExclamation + vbDefaultButton2, "Date de la Pièce"
              datepiece = DateValue(Date)
              'cancel = True
            ElseIf datepiece > DateValue(Date) Then
              MsgBox "Date incompatible", vbExclamation + vbDefaultButton2, "Date de la Pièce"
              datepiece = DateValue(Date)
              cancel = True
         End If
    End Sub
    1. Bonjour f894009

      merci pour ta solution et j'ai vu où était mon souci (entre "date" et "now").

      je venais d'en trouver une autre qui fonctionne également
      quelle différence y a t il entre beforeUpdate et exit ?

      Private Sub TextBox3_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
      TextBox3.Value = Format(TextBox3.Value, "dd/mm/yyyy")
      If Not IsDate(Me.TextBox3) Then
      MsgBox "Erreur de saisie", vbExclamation + vbDefaultButton2, "Date de la Pièce"
      Cancel = True
      ElseIf CDate(TextBox3.Value) > Date Then
      MsgBox "Date invalide", vbExclamation + vbDefaultButton2, "Date de la Pièce"
      TextBox3 = ""
      Cancel = True
      End If

      End Sub
      1. Re,

        ces evenements s'exectutent dans cet ordre et la ou il y a Cancel posibilite de faire des test et ne pas sortir de la textbox

        Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

        Private Sub TextBox2_AfterUpdate()

        Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)