Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 22 nov. 2004 à 18:10
private function verifSS(nb as string) as boolean
dim nbss as long
dim retour as boolean
retour=true
nbss=val(nb)
if nbss<1000000000 then retour=false
verifss=nbss
end function
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 22 nov. 2004 à 18:32
Salut Acidkepler
Pour info, les n° de SS ont le format :
ABBCCDDEEEFFF GG
A = 1 Homme, 2 femme
BB = Année de naissance
CC = Mois de naissance
DD = Département de naissane
EEE = Code Insee de la ville de naissance
FFF = N° annuel de naissance
GG = CheckSum des précédents chiffres (un XOR je crois)
Vala
Jack
NB : Je ne répondrai pas aux messages privés
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 22 nov. 2004 à 18:39
Moi j'en savais rien, je teste juste qu'il y ai 9 chiffre et que cela ne soit pas nulle, c'est tout. Merci pour l'info jack, je dormirais moins con ce soir ;)
cs_labout
Messages postés1356Date d'inscriptionsamedi 8 décembre 2001StatutMembreDernière intervention23 octobre 20068 22 nov. 2004 à 21:20
labout (celui qui donne les solutions)
Voila une fonction qui le fait
Funcction CalculCleNir(sValeur) As Boolean
Dim scle As Variant
Dim X, y, z, w, v, u, icle
Dim xValeurTest As String
If sValeur = "" Then
CalculCleNir = True
Exit Function
End If
' calcul pour la corse
' source http://xml.insee.fr/schema/nir.html ' On soustrait du nombre à 13 chiffres ainsi obtenu la valeur 1000000
' si le caractère alphabétique remplacé par un zéro était la lettre A,
' ou la valeur 2000000 si c'était la lettre B.
If InStr(sValeur, "B") > 0 And Len(sValeur) = 15 Then
sValeurtest = Replace(sValeur, "B", "0")
sValeurtest = Val(Left(sValeurtest, 13) - 2000000)
sValeurtest = Str(sValeurtest) & Mid(sValeur, 14)
X = Val(Left(sValeurtest, 13))
y = X / 97
z = Int(y)
w = z * 97
v = X - w
u = 97 - v
icle = u
If Trim(Str(icle)) <> Val(Right(sValeurtest, 2)) Then
CalculCleNir = False
Else
CalculCleNir = True
End If
Exit Function
End If
If InStr(sValeur, "A") > 0 And Len(sValeur) = 15 Then
sValeurtest = Replace(sValeur, "A", "0")
sValeurtest = Val(Left(sValeurtest, 13) - 1000000)
sValeurtest = Str(sValeurtest) & Mid(sValeur, 14)
X = Val(Left(sValeurtest, 13))
y = X / 97
z = Int(y)
w = z * 97
v = X - w
u = 97 - v
icle = u
If Trim(Str(icle)) <> Val(Right(sValeurtest, 2)) Then
CalculCleNir = False
Else
CalculCleNir = True
End If
Exit Function
End If
' End If
If Len(Trim(sValeur)) <> 15 Then
CalculCleNir = True
Exit Function
End If
If Left(sValeur, 1) "7" Or Left(sValeur, 1) "3" Or Left(sValeur, 1) = "8" Then
' pas de calcul de clé
CalculCleNir = True
Exit Function
Else
If Val(Mid(sValeur, 4, 2)) > 12 Then
CalculCleNir = False
Exit Function
End If
X = Val(Left(sValeur, 13))
y = X / 97
z = Int(y)
w = z * 97
v = X - w
u = 97 - v
icle = u
If Trim(Str(icle)) <> Val(Right(sValeur, 2)) Then
CalculCleNir = False
Else
CalculCleNir = True
End If
End If
End Function
appel
if calculecleNir(leN)Secu) then
' alors on fait