isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008
-
21 sept. 2007 à 15:55
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008
-
24 sept. 2007 à 18:46
Salut à tous,
Je vient de me mettre au vba pour des besoin professionel mais je n'y connait presque rien, donc un coup de main m'est nécessaire.
Je doit automatiser l'insertion de donnée dans un tableau exell,
Dans ce tableau je doit vérifier l'autenticité des dates entré par l'utilisateur.
Public Function verif_date(ByRef la_date As String)
End Function
Dim jour As String
Dim mois As String
Dim annee As String
If la_date = "" Then
Exit Function
End If
jour = Int(Left(la_date, 2))
annee = Int(Right(la_date, 4))
mois = Int(Mid(la_date, 4, 2))
verif_date = True
If mois > 12 Or mois < 1 Then
verif_date = False
Else
Select Case mois
Case Is = 1, 3, 5, 7, 8, 10, 12
If jour > 31 Or jour < 1 Then
verif_date = False
End If
Case Is = 4, 6, 9, 11
If jour > 30 Or jour < 1 Then
verif_date = False
End If
Case Is = 2 If annee Mod 4 0 Or annee Mod 400 0 Then
'Annee bisextile
If jour > 29 Or jour < 1 Then
verif_date = False
End If
Else
' Annee pas bisextile
If jour > 28 Or jour < 1 Then
verif_date = False
End If
End If
End Select
End If
End Function
et je donc je doit envoyer la date dans le tableau avec ce code
Range("O1") = textB_date
ma question est:
ou doit-je exactement mettre la fonction verif_date? je suppose sur le formulaire même.
et l'envoye avec le range dans le text_boxe non?
Merci pour votre coup de main.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 sept. 2007 à 13:14
Tu dois commencer par déclarer ta Function As Boolean pour qu'elle renvoie True ou False
Public Function verif_date(ByRef la_date As String) As Boolean
Ensuite, ce n'est pas très clair, mais tu pourrais utiliser ta Function comme ceci
If verif_date(textB_date) Then ' =True est implicite, mais pourrais être écrit
Range("O1") = textB_date
Else
MsgBox "Erreur dans la date"
End If
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 sept. 2007 à 21:54
salut,
la fonction, IsDate n'existe pas en VBA?....
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 sept. 2007 à 11:30
Si la date a toujours 2 chiffres (02/09/07), Mid devrait bien fonctionner
Par contre, si elle peut contenir un seul chiffre (2/9/07), alors ça ne va plus.
Tu pourrais utiliser
MonTablo = Split(la_date, "/") ' remplace le / par le bon séparateur
MonTablo(0) contiendra le jour, MonTablo(1) le mois et MonTablo(2) l'année
Mais comme dit PCPT, la fonction IsDate sert justement à vérifier la date
If IsDate(la_date) then
Msgbox "La date est OK"
....
Il faut être prudent tout de même
Dim Ladate
'Ladate = "40 09 07" ' on peut ajouter le / ou le - comme séparateur
Ladate = "10 09 47"
If IsDate(Ladate) Then MsgBox CDate(Ladate) & " (OK)" Else MsgBox "Non"
Les 2 retournent Vrai, mais la date n'est pas la même, bien sûr
isis1be
Messages postés45Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention19 avril 2008 24 sept. 2007 à 18:46
ok merci pour tout, vais voir ca à mon aise car comme ca c'est
vachement compliqué pour moi.
je reviendrais pour dire quoi et pour d'autres info si ca ne va pas.
Un tout grand merci à vous deux et @++