Tester la validité d'une date

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

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.