User Form relié à un tableau exell

Signaler
Messages postés
45
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
19 avril 2008
-
Messages postés
45
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
19 avril 2008
-
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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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²
Messages postés
45
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
19 avril 2008

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 @++
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Peux-tu écrire le bout de code et indiquer à quel endroit il donne ce message d'erreur ?

MPi²
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
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
Messages postés
45
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
19 avril 2008

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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²
Messages postés
45
Date d'inscription
lundi 15 septembre 2003
Statut
Membre
Dernière intervention
19 avril 2008

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 @++