Bonjour,
je cherche à vérifier si la date saisie par l'utilisateur est correcte.
Le fonction IsDate contrôle une partie, mais ne me permet pas d'interdire la saisie d'une date impossible comme le 31 février, 31 septembre
Bonjour,
je cherche à vérifier si la date saisie par l'utilisateur est correcte.
Le fonction IsDate contrôle une partie, mais ne me permet pas d'interdire la saisie d'une date impossible comme le 31 février, 31 septembre
Salut !
Petite proposition... Pourquoi ne pas mettre tes mois dans une combobox ? comme ca l'utilisateur ne risquera pas de faire d'erreur de manip... (Août / Aôut / Aout / aout...)
+++
Ju
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
Je dois laisser ce champ en saisie libre, je ne peux pas non plus utiliser le calendrier pour faire cliquer l'utilisateur (c'est "imposé)...
Je voudrais réussir à comparer la date saisie avec le calendrier windows, j'imagine que c'est faisable.
Si la date n'éxiste pas, erreur, sinon on continue.
Et je voudrais aussi éviter d'avoir à saisir par exemple, le nombre de jour de chaque mois. Avec des exeptions lors des années bisextiles...
Oh là, ca risque d'être un peu long ce que tu veux faire...
Un pti bout de code pas optimisé (du tout) pour illustrer mes dires...
A toi d'adapter tout ca, il y a une sacré gestion à implémenter (à mon humble avis...) Mois de février, bissextile...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Private moisArray() As Variant Private Sub testeLeTout() moisArray = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre") Debug.Print testDate("01 janvier 2005") Debug.Print testDate("41 janvier 2005") Debug.Print testDate("01 jnvier 2005") Debug.Print testDate("01 janvier 20056") End Sub Private Function testDate(uneDate As String) As Boolean Dim tabDate() As String tabDate = Split(uneDate, " ") Dim ok As Boolean If tabDate(0) >= 1 And tabDate(0) <= 31 Then If testMois(tabDate(1)) = True Then If Len(tabDate(2)) = 4 Then ok = True Else MsgBox "mauvais format d'année" ok = False End If Else MsgBox "mauvais format de mois !" ok = False End If Else MsgBox "mauvais format de jour !" ok = False End If testDate = ok End Function Private Function testMois(unMois As String) As Boolean Dim ok As Boolean ok = False For i = 0 To UBound(moisArray) If LCase(unMois) = LCase(moisArray(i)) Then ok = True End If Next i testMois = ok End Function Private Function isBissextile(uneAnnee As Integer) As Boolean If uneAnnee Mod 4 = 0 Then isBissextile = True Else isBissextile = False End If End Function
Bon courage
+++
Ju
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
merci (en autre pour IsBisextile)!
Je pensais qu'il était possible de faire ça simplement, mais bon, tant pis, je vais coder cette fonction et ça ira bien.
bon, j'ai fait ma petite fonction, tout confiant.
Et là nouveau problème :
si je saisi une fausse date dans ma maskbox, par exemple 32/05/01, la date passée en paramètre dans ma fonction change : 05/01/32.
Genre la date est modifiée pour tenter de reconstituer une date avec une structure correcte (DD/MM/YY)
Il faut que tu utilises la fonction format pour formater ta date...
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
elle est formatée...Envoyé par sozie9372
si je saisi une date valide, 12/04/05, c'est bien cette date qui est passée en paramètre dans ma fonction.
Si par contre je saisi une date bidon 32/04/05, cette date est transformée avant d'etre passé en paramètre en 05/04/32 (cette modif n'arrive qu'en cas de fausse date. Il y a donc bien quelque chose qui permet de savoir si la date éxiste ou pas...grrrr)
Je tourne en rond.
Une première fonction de test avant de passer ta date en paramètre non ? ou sinon tu convertis ta date en String...
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
très bonne idée, je n'avais pas pensé à ça.
Bon, c'est de la bidouille, bosser sur des dates comme ça, c'est pas ce que je préfère, mais au moins, ça marche!
Merci pour ton aide !
je crois que j'ai mal lu ton premier post... En fait, pourquoi ne pas utiliser tout simplement les expressions régulières ??????????
Leur but est de valider le contenu d'une chaine de caractères (eMail, date...)
+++
Ju
De rien ce fut un plaisir !
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
heu, tu peux m'expliquer stp?
Dans la FAQ il y a un sujet là dessus... Il te suffit d'adapter le pattern à ce que tu veux...
Pour l'email :
explications :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$"
^[a-z0-9_.-] : autorise tous les caractères de a à z (en minuscule) ainsi que les chiffres de 0 à 9 et les caractère _ . et - (par exemple billyjoel29)
+@ : pour l'arobase
[a-z0-9.-]{2,} : au minimum 2 caractères, chiffres, . ou - (par exemple hotmail)
\. : un point (protégé par le \
[a-z]{2,3} : 2 ou 3 caractères de fin (par exemple com, net, fr...)
ton adresse est donc validée ou non suivant ce pattern. Avec un peu de lecture, ca viendra vite et tu pourra l'adapter aux dates...
+++
Ju
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
Hors sujet, dans ce cas-ci.
Il s'agit de vérifier la validité d'une date (p.ex. 30 février n'existe pas), pas des caractères qui la composent.
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
En vérifiant si ta chaine est composée de 2 chiffres, suivi d'un / pour le jour, idem pour le mois et enfin terminer par 4 chiffres, tu peux déjà élaguer pas mal de saisies érronées (après chacun a son propre avis...).
Ensuite, je te l'accorde, cela ne fait pas tout, les expressions régulières vont te par exemple te permettre de vérifier qu'une adresse mail est valide, mais pas que le compte existe... C'était juste pour illustrer
+++
Ju
"Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
Penser à svp
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager