Tester la validité d'une date

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 945 fois - Téléchargée 30 fois

Contenu du snippet

petit algorithme qui teste si un nombre correspond à une date valide. Le format du nombre saisi doit être jjmmaaaa mais vous pouvez adapter ce code facilement pour tout autre format. Le code est fait pour accepter les années à partir de 1900, nombre que vous choisissez comme il vous plaît !
la fonction retourne ok qui vaut 0 si la date est validée, 1 sinon.

Source / Exemple :


Function verifdate(ByVal datesaisie As Integer)
        Dim ok As Integer
        ok = 0
        'date sur 8 caractères
        If datesaisie > 31129999 Or datesaisie < 1010000 Then
            ok = 1
        Else
            'jour entre 1 et 31
            Dim jour As Integer
            jour = datesaisie / 1000000
            If jour > 31 Or jour < 1 Then
                ok = 1
            Else
                'mois entre 1 et 12
                Dim mois As Integer
                mois = datesaisie / 10000 - jour * 100
                If mois > 12 Or mois < 1 Then
                    ok = 1
                Else
                    'annee à partir de 1900
                    Dim annee As Integer
                    annee = datesaisie - jour * 1000000 - mois * 10000
                    If annee < 1900 Then
                        ok = 1
                    Else
                        'mois à 30 jours
                        If (mois = 2 Or mois = 4 Or mois = 6 Or mois = 9 Or mois = 11) And jour = 31 Then
                            ok = 1
                        Else
                            'cas particulier : février
                            Dim quotient As Integer = annee / 4
                            Dim quotient2 As Integer = annee / 400
                            If quotient * 4 = annee And quotient2 * 400 <> annee Then
                                If mois = 2 And jour > 29 Then
                                    ok = 1
                                End If
                            Else
                                If mois = 2 And jour > 28 Then
                                    ok = 1
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
        Return ok

    End Function

Conclusion :


merci d'être indulgent, c'est le premier code que je met sur le site !
C'est peut être un peu long mais au moins c'est clair, je ne pense pas avoir oublié de cas.

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
20 mars 2009

Dépassements de capacités dans tous les sens, ça marche pas du tout
Messages postés
3
Date d'inscription
mercredi 12 mars 2003
Statut
Membre
Dernière intervention
28 novembre 2006

Le problème avec la fonction isdate() c'est qu'elle prend comme bonnes toutes les dates : DD/MM/YYYY MM/DD/YY etc.

Au moins avec cette fonction on restreint vraiment les possibiltés : la date doit être sur 8 au format DDMMYYYY et respecter un certain nombre de conditions...

Merci
Messages postés
85
Date d'inscription
mardi 6 janvier 2004
Statut
Membre
Dernière intervention
7 mai 2007

Salut Dragon
Repeter n fois la meme erreur et chronometrer le temps que ça prend n'est pas une bonne idée.
La premiere fois l'erreur va prendre beaucoup de temps a etre generer, les fois suivantes s'est quasi instantané.

Autre chose, c'est byzarre mais chez moi le temps que prend .NET a generer um erreur est de loin plus long que VB.
Faut dire aussi l'object erreur de .NET est trés complet.
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
6
pour du VBA tu as access, word ou excel dépendant du cas
pour le VB, c'est VB6.0 qu'il faut utiliser
pour VB.net c'est VB.net lol

en passant, c'est pas le sujet ici. Tu as un forum sur le site pour ça et un engin de recherche pour trouver tes réponses si elles ont déjà été posé
Messages postés
3
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
22 septembre 2005

j'ai une question:
comment fais-je pour lire les apllications VB. Je programme en VB, mais par l'intermédiaire de access.

Je transpute le code dans access, mais la plupart du temps, il me dit que c'est une belle erreur. Que dois-je faire??

Merci
Afficher les 21 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.