CALCULER LA CLÉ DE LA SÉCURITÉ SOCIALE FRANCAISE

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 20 mars 2007 à 22:34
Neroc Messages postés 2 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 12 déc. 2007 à 20:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41910-calculer-la-cle-de-la-securite-sociale-francaise

Neroc Messages postés 2 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 12 décembre 2007
12 déc. 2007 à 20:07
Plus précisément le N° de sécu s'appelle Numéro d'Incription au Répertoire ou NIR
manu1506 Messages postés 54 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 25 avril 2012
9 juin 2007 à 15:40
D'ailleur on l'appelle à tort "numéro de sécurité sociale" alors que son vrai nom est "Numéro INSEE"
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
22 avril 2007 à 08:36
La réponse se situe ici : http://fr.wikipedia.org/wiki/Code_INSEE
chavithra Messages postés 11 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 21 avril 2007
21 avril 2007 à 20:44
c'est quoi une clé de sécurité social?
ane2007 Messages postés 2 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 21 mars 2007
21 mars 2007 à 17:31
Merci JAPEE
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 mars 2007 à 13:30
Pour la Corse :
- on remplace le caractère 'A' ou 'B' par un '0' (zéro) ;
- si la lettre est 'A', on soustrait au nombre de 13 chiffres la valeur 1 000 000 et si la lettre est 'B' on soustrait 2 000 000, ce qui revient à mon avis à remplacer '2A' par '19' et '2B' par '18'.

J'ai retrouvé une fonction que j'avais faite, à voir si on peut l'optimiser, mais le principe est bon :

function GetNIRKey(S: string): string;
var
Value: Int64;
Dep: string;
begin
Result := '';
Dep := UpperCase(Copy(S, 6, 2));
if Dep = '2A' then
S := StringReplace(S, '2A', '19', [])
else if Dep = '2B' then
S := StringReplace(S, '2B', '18', []);
Value := StrToInt64Def(S, 0);
if Value <> 0 then
Result := Format('%.2d', [97 - (Value mod 97)]);
end;
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
21 mars 2007 à 13:16
Pouquoi utiliser currency ?
Avec Int64, on fait l'économie d'un Trunc :

Label1.Caption := Format('%.2d', [97 - StrToInt64Def(Edit1.text, 0) mod 97]);
bjim Messages postés 2 Date d'inscription vendredi 26 septembre 2003 Statut Membre Dernière intervention 20 novembre 2008
21 mars 2007 à 08:38
Pour simplifier : en 1 ligne (sauf pour la Corse :<) dans ton Edit1Change tu peux écrire:

label1.Caption := Format('%.2d',[97-Trunc(StrToCurrDef(edit1.text, 0)) mod 97]);
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 mars 2007 à 23:29
mouai bof ... par contre utilise StrToInt64Def(..., 0) sinon on as une erreur quand le champ est vide...
pense egalement a indenter ton code et sincerement, ce genre de code a plutot sa place dans les snippets plutot que les sources.

ah, je corrige egalement le tag "expert" pour "debutant" ... pas besoin d'etre expert pour utiliser un modulo.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
20 mars 2007 à 22:48
Pour la spécificité Corse (depuis 1976), voir le paragraphe 4.1 sur la page :
http://xml.insee.fr/schema/nir.html#Clé_NIR-description
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 mars 2007 à 22:34
Et la Corse ? Tu as oublié la Corse (2A et 2B).

Vont pas être contents, les Corses, il va y avoir de la vendetta ^^
Il est vrai que ça complique un peu l'algo, mais il est tellement simple à la base...

Allez, au travail !

P-S: je sais, j'ai mis dans le même paragraphe les mots "travail" et "Corse", je ne l'ai pas fait exprès...