vérifier la validité d'une date saisie dans un textbox

  • Initiateur de la discussion Initiateur de la discussion sri75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sri75

XLDnaute Occasionnel
bonjour, j'utilise un textbox pour entrer une date et je voudrais pouvoir vérifier que la date est bien saisie au format jjmmyyyy et est valide.

A ma grande surprise si j'utilise la fonction cdate, ma date saisie 12/14/2009 se transforme en 14/12/2009 automatiquement.

Merci de me donner votre avis sur la façon d'optimiser ce controle
 
Re : vérifier la validité d'une date saisie dans un textbox

Bonjour

Le format par défaut ne permet pas les nombres à virgule
Voici ma proposition :
Code:
Dim zy As String

zy = TextBox3.Value

[COLOR="Green"]'remplacer le . par , qui permet une saisie plus agréable[/COLOR]
[COLOR="red"]zy = Replace(zy, ".", ",")
If IsNumeric(zy) Then
zy = CDbl(zy)
End If[/COLOR]

If zy <= 0 Or [COLOR="red"]Not IsNumeric(zy)[/COLOR] Or zy > 100 Then
MsgBox ("le taux d'amortissement n'est pas correct ou doit être renseigné")

TextBox3.Value = ""
Cancel = True

Exit Sub
End If












'Range("e11") = Y

'Selection.NumberFormat = "0.00%"
'textbox3.value= format(mavariable ou mon range *100,"0,00 %")

'TextBox3.f
Range("e11") = FormatPercent([COLOR="Red"]zy [/COLOR]/ 100, 2)


En espérant que la solution donne satisfaction
Cordialement
Olivier
 
Dernière édition:
Re : vérifier la validité d'une date saisie dans un textbox

Un peu comme ce qu'a fait Odesta,
Private Sub TextBox3_Change()
zy = Val(TextBox3.Value)
If zy <= 0 Or zy = "" Or zy > 100 Then
MsgBox ("le taux d'amortissement n'est pas correct ou doit être renseigné")
TextBox3.Value = ""
Cancel = True
Exit Sub
End If
TextBox3 = Replace(TextBox3, ".", ",")
Range("e11") = FormatPercent(TextBox3 / 100, 2)
'toto
End Sub
 
Re : vérifier la validité d'une date saisie dans un textbox

Bonsoir Jean-Marcel,
Désolé de ne pas avoir vu les différents postes.
Néanmoins je viens de tester le code de l'auteur inconnu.
Je trouve qu'il y a une annomalie car si on tape "29/02/2010" la date est validée.
C'est la 1ere date que j'ai testée . . . .
Avec ma macro un peu similaire je fais une vérif avant de valider.
Jean-Marcel je veux te dire que je repère vite tes roues dentées et que j'apprécie tes codes.
A+
Bruno
 
Re : vérifier la validité d'une date saisie dans un textbox

Bonjour Jean-Marcel,
Je n'avais pas remarqué de mettre que les 2 derniers chiffres.
Donc moi qui mettait 2010 c'est l'année 2020 qui était prise en compte (année bisextile).
Bonne journée
 
Re : vérifier la validité d'une date saisie dans un textbox

Bonjour le fil, saluts à youky et Jean-Marcel,

J'avais abandonné ce fil, et je reviens avec un contrôle de date (jjmmaaaa) assez simple :

Code:
Private Sub TextBox1_Change()
Dim x$, d As Date
x = TextBox1
If x = "" Then Exit Sub
If Len(x) > 8 Or Not x Like "*#" Or Left(x, 2) = "00" Or Left(x, 4) > "3112" _
  Or Len(x) > 3 And Not IsDate(Left(x, 2) & "/" & Mid(x, 3, 2) & "/2000") _
    Then TextBox1 = Mid(x, 1, Len(x) - 1 + (Len(x) = 4)): Exit Sub
If Len(x) = 8 Then
  On Error Resume Next 'si d n'est pas une date
  d = Left(x, 2) & "/" & Mid(x, 3, 2) & "/" & Right(x, 4)
  If Err Then TextBox1 = "": Exit Sub
  '---suite du code en utilisant d---
End If
End Sub

Il n'y a aucun message d'erreur, mais on efface si ça ne va pas.

A noter que le contrôle fonctionne si l'on fait des entrées par copier/coller...

A+
 
Dernière édition:
Re : vérifier la validité d'une date saisie dans un textbox

Bonsoir,

J'ai revu et complété la macro avec un contrôle de l'année (en rouge) :

Code:
Private Sub TextBox1_Change()
Dim x$, d As Date
x = TextBox1
If x = "" Then Exit Sub
If Len(x) > 8 Or Not x Like "*#" _
  Or Left(x, 2) = "00" Or Left(x, 2) > "31" Or Mid(x, 3, 2) > "12" _
    Or Len(x) > 3 And Not IsDate(Left(x, 2) & "/" & Mid(x, 3, 2) & "/2000") _
      [COLOR="red"]Or Mid(x & 99999, 5, 2) < "19"[/COLOR] _
        Then TextBox1 = Mid(x, 1, Len(x) - 1 + (Len(x) = 4))
If Len(x) <> 8 Then Exit Sub
On Error Resume Next 'si d n'est pas une date
d = Left(x, 2) & "/" & Mid(x, 3, 2) & "/" & Right(x, 4)
If Err Then TextBox1 = "": Exit Sub
'---suite du code en utilisant d---
End Sub
A+
 
Re : vérifier la validité d'une date saisie dans un textbox

Bonsoir Staple 🙂

A priori, sur ce fil, on veut contrôler l'entrée d'une date au format jjmmaaaa.

Ce format n'est donc pas un format Date reconnu par Excel (heureusement).

A+
 
Re : vérifier la validité d'une date saisie dans un textbox

Merci à tous pour vos super contributions,

par rapport à la macro d'Odesta une petite question sur une pb sur lequel je butte depuis un moment, comment éviter qu'un opérateur puisse saisir 20% au lieu de 20 car s'il saisi 20% ca plante la macro.

Merci à tous
 
Re : vérifier la validité d'une date saisie dans un textbox

Finalement j'ai contourné l'obstacle avec un "On Error Resume Next"

avant

If zy <= 0 Or Not IsNumeric(zy) Or zy > 100 Then

donc ca saute l'erreur vba et déclenche le msgbox.

ce n'est pas très académique mais ca marche !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour