PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Controle du n° insee
Controle du n° insee
Iniciado por christian.carnet, 25,nov. 2006 20:40 - 3 respuestas
Publicado el 25,noviembre 2006 - 20:40
Bonjour à tous,

Je cherche un bout de programme écrit en WINDEV biensur,
qui me permettrai de contrôler un numéro de sécurité sociale (insee)

Merci pour vos réponses
A
Publicado el 26,noviembre 2006 - 08:52
Bonsoir
Un bout de code à adapter à vos besoins sur le Ctrl du n° de S.S.

lmNumSs est un monétaire
lmDiviseur est un monétaire = 97
lmResteDivision est un monétaire
lo_cle_ss est un entier
lo_numss est une chaîne
lo_numss=NUM_SS //Num_ss est le champ contenant le N° de S.S. //CLE_SS
est le champ contenant la clé
//-----on regarde si Corse : 2A ; 2B = 18
SI Milieu(lo_numss,6,2) = "2A" ALORS
lo_numss =Gauche(lo_numss,5) "19" Milieu(lo_numss,8)
FIN
SI Milieu(lo_numss,6,2) = "2B" ALORS
lo_numss =Gauche(lo_numss,5) "18" Milieu(lo_numss,8)
FIN
lmNumSs=Val(lo_numss)
SI lmNumSs<>0 ALORS
lmResteDivision = Arrondi(PartieDécimale(lmNumSs/lmDiviseur)*lmDiviseur)
lo_cle_ss = (97 - lmResteDivision)
SI lo_cle_ss <> Val(CLE_SS) ALORS
Erreur("Erreur entre Le Numéro de Sécurité Sociale : " NUM_SS RC ...
"et la clé : " CLE_SS RC ...
"Veuillez ressaisir le Numéro ou sa clé")
CLE_SS =0
NUM_SS=""
RepriseSaisie("NUM_SS")
FIN
FIN

Cordialement
Serge Staszak

"Christian" <christian.carnet@free.fr> a écrit dans le message de news:
45687e7b$1@news.pcsoft.fr...

Bonjour à tous,

Je cherche un bout de programme écrit en WINDEV biensur,
qui me permettrai de contrôler un numéro de sécurité sociale (insee)

Merci pour vos réponses
A

Publicado el 26,noviembre 2006 - 08:52
PROCEDURE VERIFSAISIE_NUMERO_SS(NUMERO_SECU)
nI,nCLEF,CORSE est entier
nNumero est entier sans signe sur 8 octets
sNUMSS est chaîne
SI NUMERO_SECU<>"" ALORS // si rien n'est saisit renvoie toujours vrai

SI Taille(NUMERO_SECU)<21 ALORS
RENVOYER(Faux) // verif sur taille chaine saisie
FIN

SI Milieu(NUMERO_SECU,10,1)="A" ALORS // traitement spécial pour la Corse
CORSE00000
SINON
SI Milieu(NUMERO_SECU,10,1)="B" ALORS
CORSE 00000
SINON
CORSE=0
FIN
FIN


nCLEF=Val(SansEspace(Droite(NUMERO_SECU,2)))


POUR nI=1 A (Taille(NUMERO_SECU)-3)
SI NUMERO_SECU[[nI]]<>" " ALORS

SI NUMERO_SECU[[nI]]="A" OU NUMERO_SECU[[nI]]="B" ALORS
sNUMSS ="0"
SINON
sNUMSS =NUMERO_SECU[[nI]]
FIN

FIN
FIN


nNumero=Val(sNUMSS) nCLEF // CORSE

SI modulo(nNumero,97)<>0 ALORS // verif du chiffre clé
RENVOYER(Faux)
FIN
FIN
RENVOYER Vrai
Publicado el 29,mayo 2019 - 10:28
FONCTION testsecu(sNumSecu est une chaîne fixe sur 15)
bOk est un booléen = Vrai
nNoSecu est un numérique
nClef est un entier
sNoSS est une chaîne = sNumSecu

//Vérification de la validité visuelle du No de sécu
SI sansespace(sNumSecu) ="" RENVOYER (Faux, 0)

//1er traitement de la Corse
SI PAS EstNumérique(sNoSS[[7]]) sNoSS[[7]] = 0
SI PAS EstNumérique(sNoSS[[ A 13]]) RENVOYER (Faux, 0)

nNoSecu = Val(sNoSS[[ A 13]])

//2ème traitement de la Corse
SELON sNumSecu[[7]]
CAS "A"
nNoSecu -= 1000000
CAS "B"
nNoSecu -= 2000000
AUTRE CAS
//ne rien faire
FIN

nClef = (97 - modulo(nNoSecu,97))

bOk = (nClef = Val(sNumSecu[[ 14 A 15]]))

RENVOYER (bOk, nClef)