User Form relié à un tableau exell

isis1be Messages postés 45 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 avril 2008 - 21 sept. 2007 à 15:55
isis1be Messages postés 45 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 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.

7 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi²
0
isis1be Messages postés 45 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 avril 2008
22 sept. 2007 à 19:26
ok vient de faire ça , mais maintenant il me met qu'il y a une incompatibilité de type
à cette ligne ci:

mois = Int(Mid(la_date, 4, 2))

et j'ai beau changé en integer ou autre mais il me redonne tjrs l'erreur
Merci déja pour ton aide et @++
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 sept. 2007 à 20:55
Peux-tu écrire le bout de code et indiquer à quel endroit il donne ce message d'erreur ?

MPi²
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
isis1be Messages postés 45 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 avril 2008
24 sept. 2007 à 09:25
voila de suite:


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

Voila l'erreur trouvée se trouve à la ligne mois.

et pour la fonction isDate je ne sais pas
merci aussi pcpt
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi²
0
isis1be Messages postés 45 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 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 @++
0
Rejoignez-nous