Vérifier format date

Salut le forum

J'ai trouvé 2 codes qui me permettent chacun :

le 1er: je saisie la date de facon brute et il complete les formats date,

le 2è:il vérifie si ce qui est saisie est bien une date sinon il signal format incorrect.

Ci-dessous les 2 codes:

Private Sub TextBox1_Change()
    Dim Valeur As Byte
    TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then TextBox1 = TextBox1 & "/"
End Sub

'Ensuite pour vérifier que c'est bien une date qui a été saisie
Private Sub CommandButton1_Click()
    If Not IsDate(TextBox1) Then
        MsgBox "Format incorrect"
        TextBox1 = ""
        Exit Sub
        Else
        MsgBox "Format correct"
        '...la suite de la procédure
    End If
End Sub

Je souhaite les combiner en un seul code mais j'arrive pas par le code que j'ai essayé ci-dessous:

A peine je commence à saisir qqch qu'il signal format incorrect.

Pour moi c'est lorsque je fini de saisir la date qu'il doit l'apprecier.

Merci de m'aider

Private Sub TextBox75_Change()

    Dim Valeur As Byte
    TextBox75.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox75)
    If Valeur = 2 Or Valeur = 5 Then TextBox75 = TextBox75 & "/"
    If Not IsDate(TextBox75) Then
        MsgBox "Format incorrect"
        TextBox75 = ""
        Exit Sub
        End If
End Sub

Cdlt

Bonjour

il faut peut être ajouter un contrôle du nombre de caractère de ton textbox75 avant de vérifier si c'est une date autrement tu auras ton message tant que le textbox75 ne sera pas rempli par ta date complète

a+

Papou

Bonjour,

Private Sub TextBox1_Change()
Dim Valeur As String
    'C'est inutile de surcharger la fonction
    'Cette propriété doit être déclarée dans le design
    TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then
        TextBox1 = TextBox1 & "/"
    ElseIf Valeur = 10 Then
         If Not IsDate(TextBox1) Then
             MsgBox "Format incorrect"
             TextBox1 = ""
             Exit Sub
         Else
             MsgBox "Format correct"
             '...la suite de la procédure
        End If

    End If
End Sub

A+

Salut Paritec

Merci pour le conseil.

En comment puis-je le faire.

J'ai tenté qqch mais ca n'a pas marché.

Peut-on me donner un coup de main?

Voici ce que j'ai essayé:

Private Sub TextBox75_Change()
    Dim Valeur As Byte
    TextBox75.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
    Valeur = Len(TextBox75)
    If Valeur = 2 Or Valeur = 5 Then TextBox75 = TextBox75 & "/"
    If Not IsDate(TextBox75.MaxLength) Then
        MsgBox "Format incorrect"
        TextBox75 = ""
        Exit Sub
        End If
End Sub

Bonjour,

A tester

Cordialement

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  If Not IsDate(Me.TextBox1) Then
    MsgBox "Erreur saisie!"
    Cancel = True
  End If
End Sub

Private Sub TextBox1_Change()
  Calcul
End Sub

Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  If Not IsNumeric(Me.TextBox2) Then
    MsgBox "Erreur saisie!"
    Cancel = True
  End If
End Sub

Private Sub TextBox2_Change()
  Calcul
End Sub

Sub Calcul()
  If IsDate(Me.TextBox1) And IsNumeric(Me.TextBox2) Then
    Me.TextBox3 = Format(CDate(Me.TextBox1) + CDbl(Me.TextBox2), "dd/mm/yy")
  End If
End Sub

Salut à tous

merci pour vos contributions.

lermite a écrit :

Else

MsgBox "Format correct"

'...la suite de la procédure

J'ai pas bien compris.

En testant y'a debogage : bloc else sans if

La suite de la procédure..... que dois-je mettre?

Cordialement

Salut Lermite et le forum

J'ai ressayé ton code et ca marche.

Mais il e signale pas toutes les erreurs.

Par exemple lorsque le mois est superieur à 12, il devrait signaler l'erreur mais tel n'est pas le cas.

Aussi, dans cette partie du code :

TextBox75 = TextBox75 & "/"

lorsque je remplace le signe / par un point(.), il signal erreur. je souhaite que les séparateur soient des points et non des barres. ex 15.09.2012

Pouvez-vous faire en sorte que cela soit possible?

Merci pour tout et pour la simplicité du code

Salut le forum

Essaye

TextBox75 = TextBox75 & "."

Et fait le test avec

If Not IsDate(Replace(TextBox75, ".", "/")) then

Mytå

Salut Myta et le forum

Merci pour votre intervention.

Il accepte maintenant les points dans les dates.

Un seul problème subsiste : lorsque le mois saisie est superieur à 12, il ne signale pas d'erreur.

J'ai saisis 15.13.2012 et ca n'a pas signalé l'erreur.

Peut-on faire de sorte que si le mois saisi n'est pas valide, qu'il signal l'erreur.

Pour les jours ca marche.

Private Sub TextBox1_Change()
Dim Valeur As String
    'C'est inutile de surcharger la fonction
   'Cette propriété doit être déclarée dans le design
   TextBox1.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
   Valeur = Len(TextBox1)
    If Valeur = 2 Or Valeur = 5 Then
        TextBox1 = TextBox1 & "."
    ElseIf Valeur = 10 Then
         If Not IsDate(Format(Replace(TextBox1, ".", "/"), "yyyy/mm/dd")) Then
             MsgBox "Format incorrect"
             TextBox1 = ""
             Exit Sub
         Else
             MsgBox "Format correct"
             '...la suite de la procédure
       End If

    End If
End Sub

A+

Salut à tous

Merci pour vos riches contributions.

Satisfait avec le dernier code.

Cdlt

Coucou !!

Voilà ce que j'ai fait si ça peut servir.. (ou être modifié en mieux ! )

Ce qu'est bizarre, c'est que ça marchait en mettant cette condition à la place du dernier "if not" (au départ) :

If Not IsDate(TextBox2) And (Left(TextBox2, 2) > 31 Or Mid(TextBox2, 4, 5) > 12) Then

et maintenant, j'ai du revenir à la condition ci-dessous pour que ça fonctionne !

Difficile de suivre avec excel !

Private Sub TextBox2_Change()
Dim Valeur As String

TextBox2.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
Valeur = Len(TextBox2)

    If Valeur = 2 Or Valeur = 5 Then
    TextBox2 = TextBox2 & "/"
    ElseIf Valeur = 10 Then
            If Not IsDate(TextBox2) Then
                MsgBox "Format incorrect"
                TextBox2 = ""
                Frame1.Visible = False
                Exit Sub
            Else
                Frame1.Visible = True
            End If
    End If

End Sub

Juste pour mes besoins, avec le peu de mes connaissances vba, ça marche nickel !

Bonjour Gregcompta le forum

tu parles d'Excel difficile à suivre!!!!

mais si tu regardes tes deux macro elles ne font pas du tout la même chose!!!

une vérifie si c'est des dates et la longueur de ces dates.

l'autre ajoute un slash si tu as 2 caractères ou 5 caractères dans ton textbox2 !!!

c'est pas pareil tu en conviendras.

a+

Papou

Rechercher des sujets similaires à "verifier format date"