GESTION DE DATE

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 21 nov. 2007 à 11:37
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 22 nov. 2007 à 23:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44783-gestion-de-date

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2007 à 23:19
tu as juste à ajouter ceci avant le on error :

' pas de "/" If (InStr(1, sDate, "/") 0) And ((LenB(sDate) 12) Or (LenB(sDate) = 16)) Then
sDate = LeftB$(sDate, 4) & "/" & MidB$(sDate, 5, 4) & "/" & MidB$(sDate, 9)
End If
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
22 nov. 2007 à 20:19
Bien, je m'incline devant tant d'expérience, ton code et bien plus ...optimisé!
Mais sans vouloir te paraitre têtu, voir chi...Autant qu'utilisateur, j'apprécie de pouvoir saisir une date sans separateurs.22101972 pour la voir validé en 22/10/1972. mais peut-être suis-je le seul?!
Mais voyant ton niveau et le mien,c'est sans doute beaucoup de ligne pour peu de choses, j'en conviens.

Merci de ta participation.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 nov. 2007 à 01:25
totalement d'accord avec toi pour essayer d'envisager des cas improbables, mais à partir du moment où ton utilisateur veut saisir "01*05^2007", c'est plus ton code qu'il faut remettre en question mais l'utilisateur lui-même ^^

tu peux cumuler la fonction format avec une gestion d'erreur et une vérification avec IsDate, il n'en faut pas plus!

Function ConvertDate(ByRef sDate As String, Optional bBeforeNow As Boolean = True) As Boolean
Dim dRet As Date
On Local Error Resume Next
dRet = Format(sDate, "DD/MM/YYYY") If Err.Number 0 Then ConvertDate IsDate(dRet) Else Err.Clear
If ConvertDate Then If bBeforeNow And (CLng(dRet) >CLng(Date)) Then ConvertDate False
If ConvertDate Then sDate = CStr(dRet)
End If
End Function
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
21 nov. 2007 à 13:46
Par contre, merci pour 'CLng', je ne connaissais pas et c'est très pratique.
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
21 nov. 2007 à 13:28
Salut,

Merci de ton interet,mais je ne suis pas d'accord avec toi, en effet:

si LaDateChaine = "21à12@1990"
madate = Format(LaDateChaine, "DD/MM/YYYY") renvoi 21à12@1990

de même si si LaDateChaine = "21121990" une erreur "depassement de capacité" intervient.

Le but de cette fonction est de palier à l'absence de separateur ou au séparateurs non conforme à une date.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 nov. 2007 à 11:37
salut,

par chance VB contient déjà des fonctions toutes faites, il faut les utiliser :

MaDate=format(LaDateChaine,"DD/MM/YYYY")
après éventuellement tu refuses si clng(Madate)>clng(date)
Rejoignez-nous