VBA - Vérifier la saisie d'une date dans TextBox

Blueangel

XLDnaute Junior
Bonsoir à tous,

Je recherche un moyen de vérifier la saisie d'une date dans un textBox en VBA (avec : jour = 30, 31, 28 ou 29, 1<mois<12).
J'ai déjà un algorithme pour savoir si une année est bissextile ou pas :

Cijoint.fr - Service gratuit de dépôt de fichiers

Est-ce que quelqu'un pourrait m'aider ?
Merci
@+
Blueangel
 

Blueangel

XLDnaute Junior
Re : VBA - Vérifier la saisie d'une date dans TextBox

Voilà un exemple avec la vérif du format date.
Par contre, après avoir fait OK, il est possible de naviguer quand même dans le formulaire (avec la date erronée) !
Comment obliger l'utilisateur à modifier sa saisie ?
@+
 

Pièces jointes

  • TbxDate.xls
    42.5 KB · Affichages: 419
G

Guest

Guest
Re : VBA - Vérifier la saisie d'une date dans TextBox

Bonjour Bleuangel,

Dans la première version de fichier que je t'ai donné, il y avait une gestion de l'évènement BeforeUpdate pour obliger l'utilisateur à saisir une date correcte. Comme te l'as dis Yann:) il faut savoir fouiller et je rajouterai, tester, se tromper recommencer etc. Car si on te donnes toujours la solution dans deux ans tu poseras les mêmes question.

A+
 

CHALET53

XLDnaute Barbatruc
Re : VBA - Vérifier la saisie d'une date dans TextBox

Re,
Pour contourner l'obstacle si l'année est inférieure à 4 caractères, j'ai compléter le module 1 par un test sur la longueur totale dans le fichier de Hasco : h_Vérif Date.xls (44,0 Ko, 5 affichages)
J'ai aussi compléter l'userform1 d'un commandbutton pour tester une mise à jour dans une cellule (A1) : là un nouveau problème arrive. Une date dont le jour est inférieur à 12 et le mois inférieur à 12 , il y a inversion dans la cellule A1. Ainsi, une saisie 11/10/2011 sera transcrite 10/11/2011
Je n'ai pas encore trouvé la solution. Peu-être, avez-vous une solution
Merci
 

CHALET53

XLDnaute Barbatruc
Re : VBA - Vérifier la saisie d'une date dans TextBox

Merci Jean Marcel pour ton intervention

J'avais rajouté dans le fichier de Hasco (h_Vérif Date.xls page 1 de ce post) un commandbutton1_click avec comme seule instruciton cells(1,1)=Textbox1.value. Un rajout du format "DD/MM/YYYY" n'y changeait rien

J'ai modifié le format sous la forme "MM/DD/YYYY" dans mon code (Et là, miracle, ça marche)

Private Sub CommandButton1_Click()

Cells(1, 1) = Format(TextBox1.Value, "MM/DD/YYYY")
End Sub

Merci
 
G

Guest

Guest
Re : VBA - Vérifier la saisie d'une date dans TextBox

Bonjour BlueAngel,
Jean-Marcel:)

Je ne sais pas de quoi tu parles mais la fonction que je t'ai donnée qui renvoie true ou false suivant qu'un texte au format '00/00/0000' représente une date valide ou non, fonctionne même appelé à partir d'une cellule.

Code:
Public Function VerifDate(ByRef la_date As String) As Boolean
    'Retourne vrai si le texte la_date au format '00/00/0000' est bien une valeur de date
    '31/02/2011 -> Faux 28/02/2011 ->vrai
    Dim t: t = Split(la_date, "/")
    If UBound(t) < 2 Or UBound(t) > 2 Or Len(la_date) < 10 Then Exit Function
    VerifDate = CStr(DateSerial(Val(t(2)), Val(t(1)), Val(t(0)))) = la_date
End Function

Pour le reste je ne t'ai pas fourni de code qui modifie une cellule. Mais avant de passer ta date au format texte (en provenance d'un textBox) à une cellule, convertit la en Date (numérique) par Cdate.

Code:
Range("A1")=Cdate(TextBox1.Text)

Sinon effectivement Vba la comprend comme une date au format US.

A+
 

CHALET53

XLDnaute Barbatruc
Re : VBA - Vérifier la saisie d'une date dans TextBox

Re,

Merci Hasco pour le format Cdate.
Pour ce qui est du format US, il fait quand même un peu ce qu'il peut : 12/10 est transformé en 10/12 alors que 25/10 reste 25/10.
L'essentiel, c'est d'avoir la bonne solution
Encore Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 864
Membres
105 084
dernier inscrit
lca.pertus