Validité d'une date

T

TETOCA

Guest
Bonsoir à toutes et à tous

Je teste la validité d'une date de la forme jj/mm/aa avec 'Isdate' qui me renvoie bien 'Faux' sur des dates non valides antérieures au 31/12/00 mais qui me renvoie 'Vrai' sur des dates non valides à partir des années '01' (exemple : '32/01/01').

Merci à celle ou celui qui voudra bien m'éclairer et me dire où je fais une erreur.

Bonne fin de semaine.
 

andré

XLDnaute Barbatruc
Salut,

Je ne connais pas la fonction ISDATE.

A mon avis ce doit être une fonction complémentaire que tu as télechargée ici ou là.
Donc difficile de te répondre.

Pour vérifier la validité d'une date tu as d'autres méthodes, comme par exemple :
=ANNEE(A1)
qui te renverra 'VALEUR! si ce n'est pas une date.

Â+
 

Fredmax

XLDnaute Nouveau
Un fait, Excel considére par exemple '30/11/00' comme une date de l'an 30.
Dans Microsoft Windows, la plage des dates valides s'étend du 1er janvier 100 au 31 décembre 9999. Les plages varient en fonction des systèmes d'exploitation.

La fonction isdate n'est pas terrible.
Mieux vaut l'utiliser en combinaison avec des trucs comme dateserial.
Cela donne par exemple:

la_date = '31/11/2000'

isdate(dateserial(cint(right(la_date,2)),cint(mid(la_date,4,2)),cint(left(la_date,2))))

Pas géant en fait la fonction isdate

Il en va de même avec la reconaissance des mois.
Par exemple:
isdate('31 decembre 2000') ne sera pas reconnu comme un date valide car decembre est écrit sans l'accent sur le e
isdate('31 décembre 2000') est reconnu.
Cela semble normal mais lorsque l'on est confronté à des mois écrits en majuscule, sa coince.

Bon courage...

Message édité par: fredmax, à: 19/11/2005 21:17
 
T

TETOCA

Guest
Bonjour André, bonjour Fredmax

Je vous remercie pour vos réponses. Aprés avoir continué à tester, je rejoins Fredmax dans ses conclusions. En effet 'Isdate' semble tester le date dans le désordre et tant qu'il n'y a pas incohérence entre les 3 nombres quelque soit leur ordre il retourne vrai. Je continue à l'utiliser mais je lui donne une date plus compléte de la façon suivante :

Private Sub TextBox1_Change()

Dim DN As Variant

Select Case Len(TextBox1)
Case 2, 5
TextBox1 = TextBox1 & '/'
Case 8

If Mid(TextBox1, 7, 1) = 0 Then
DN = Left(TextBox1, 6) & '20' & Right(TextBox1, 2)
Else
DN = Left(TextBox1, 6) & '19' & Right(TextBox1, 2)
End If

MsgBox Isdate

End Select

End sub

Merci à vous deux et bon dimanche

FJP
 

Discussions similaires

Réponses
8
Affichages
131
Réponses
2
Affichages
166

Statistiques des forums

Discussions
312 379
Messages
2 087 764
Membres
103 661
dernier inscrit
fcleves