1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
Function public Verifier_Numero(Numero) As Boolean
Dim VarJour, VarMois
Dim AnnéeBissextile As Boolean
' *** VÉRIFICATION LOGISTIQUE ET "ALPHANUMÉRIQUE" ***
' S'il y a plus ou moins que 12 caractères ... erreur
If Len(Numero) <> 12 Then
GoTo CP12Invalide
End If
' Si un ou plusieurs des 4 premiers caractères est un numérique ... erreur
If IsNumeric(Left(Numero, 1)) Or _
IsNumeric(Mid(Numero, 2, 1)) Or _
IsNumeric(Mid(Numero, 3, 1)) Or _
IsNumeric(Mid(Numero, 4, 1)) Or _
Not (IsNumeric(Right(Numero, 1))) Then
GoTo NumeroInvalide
End If
' Si un ou plusieurs des caractères 5 à 10 ne sont pas numériques ... erreur
If Not IsNumeric(Mid(Numero, 5, 6)) Then
GoTo NumeroInvalide
End If
' *** VALIDATION DE LA DATE DE NAISSANCE DANS LE Numero***
VarJour = CInt(Mid(Numero, 5, 2))
VarMois = CInt(Mid(Numero, 7, 2))
If ((CInt(Mid(Numero, 9, 1)) Mod 2 = 1) And ((CInt(Mid(Numero, 10, 1)) = 2) Or (CInt(Mid(Numero, 10, 1)) = 6))) Or _
((CInt(Mid(Numero, 9, 1)) Mod 2 = 0) And ((CInt(Mid(Numero, 10, 1)) = 0) Or (CInt(Mid(Numero, 10, 1)) = 4) Or (CInt(Mid(Numero, 10, 1)) = 8))) Then
AnnéeBissextile = True
Else
AnnéeBissextile = False
End If
' Si le jour est = à 0 ou plus > 31 ... erreur
If VarJour = 0 Or VarJour > 31 Then
GoTo NumeroInvalide
End If
' Si le mois est = à 0 ou
' si le mois est (plus > 12 et plus < 51) ou
' Si le mois est plus > 62 ... erreur
If VarMois = 0 Or (VarMois > 12 And VarMois < 51) Or VarMois > 62 Then
GoTo NumeroInvalide
End If
' Si le mois = février et que (le jour = 29 et pas année bissextile) ou que le jour = 30 ou 31)
' ou Si le mois = avril, juin, septembre ou novembre et que le jour = 31 ... erreur
Select Case VarMois
Case 2, 52
If (VarJour = 29 And Not AnnéeBissextile) Or VarJour = 30 Or VarJour = 31 Then
GoTo NumeroInvalide
End If
Case 4, 54, 6, 56, 9, 59, 11, 61
If VarJour = 31 Then
GoTo NumeroInvalide
End If
End Select
CP12Valide = True
GoTo Fin
NumeroInvalide:
NumeroValide = False
MsgBox "ATTENTION!" & Chr(13) & Chr(13) & "Le Numero est invalide.", vbExclamation
ActiveCell.Previous.Activate
Exit Function
Fin:
End Function |
Partager