Le numéro de Sécurité Sociale, attribué par l’INSEE, permet d’identifier chaque citoyen et entre autres de connaître ses droits sociaux. Le numéro de Sécurité Sociale est un des champs de données décrivant les salariés d’une entreprise dans la base de données de gestion de personnel. Cette base étant utilisée pour établir la paye mensuelle, elle entre dans le périmètre d’intervention du commissaire aux comptes.
L’analyse des numéros de sécurité sociale constitue un point d’audit intéressant lors de la revue du cycle social permettant de déceler les numéros non conformes ou en doublon.
Constitution du numéro de Sécurité Sociale
Ce numéro est composé de sept blocs de chiffres ayant chacun une signification propre. Il comprend au total quinze chiffres.
Exemple (fictif) de numéro de Sécurité Sociale :
1 76 05 14 118 044 07
1 | Sexe : 1 = Homme, 2 = Femme |
76 | Année de naissance |
05 | Mois de naissance (ici = mai) |
14 | Département de naissance (99 : étranger) |
118 | Code INSEE de la commune (ici : CAEN) |
044 | Numéro d’ordre sur le registre d’Etat Civil de la commune de naissance |
07 | Clef de contrôle calculée à partir des treize premiers chiffres |
Pour une présentation approfondie du numéro de Sécurité Sociale et ses particularités (naissance dans un DOM, en Corse, problématique des doublons…), cf. l’article Wikipédia : http://fr.wikipedia.org/wiki/Num%C3%A9ro_de_s%C3%A9curit%C3%A9_sociale_en_France
Exemples de points de contrôle sur une base de données personnel
-
Doublons de numéros de sécurité sociale dans la base paye,
-
Cohérence entre le numéro de sécurité sociale et les autres informations (sexe, date et lieu de naissance),
-
Contrôle de la cohérence du numéro de sécurité sociale (longueur du numéro, clef de contrôle).
La loi restreint l’usage du numéro de Sécurité Sociale. En effet, dans la mesure où il permet d’identifier les personnes physiques au plan national, son usage (stockage, traitement…) est limité à certains fichiers (paye par exemple) ; il est interdit de l’utiliser comme identifiant (y compris dans un fichier de paye) et d’effectuer des recoupements de fichiers à l’aide de ce numéro.
Calcul de la clef de contrôle
La clef de contrôle répond à une formule de calcul très simple. La clef est égale à 97 moins le reste de la division des treize premiers chiffres du numéro de Sécurité sociale par 97.
Pour la Corse :
-
La lettre A ou B est remplacée par un 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.
Calcul de la clef de contrôle en VBA
En VBA, la clef se calcule donc ainsi : 97 – (num13 – int(num13 / 97) * 97)
-
Num13 correspondant aux treize premiers chiffres du numéro de sécurité sociale.
-
Int() permet de ne retenir d’un nombre que la partie entière : int(12,3) renvoie 12.
La fonction ClefNumSS() définie ci-après est utilisable dans des formules de calcul EXCEL. Par exemple, pour obtenir la clef de contrôle 07 en cellule B2 à partir du numéro saisi en B1 :
A |
B |
|
1 |
1 76 05 14 118 044 |
07 |
La formule de calcul en B1 doit être : =clefnumss(A1)
Texte de la fonction :
Function ClefNumSS(numéroSS As String) Dim num13 As Currency Dim s As String Dim soustrait As Currency numéroSS = Left(Replace(numéroSS, " ", ""), 13) 'Retraitement des départements corses (2A et 2B) soustrait = 0 s = Mid(numéroSS, 7, 1) Select Case s Case "A" numéroSS = Replace(numéroSS, "A", "0") soustrait = 1000000 Case "B" numéroSS = Replace(numéroSS, "B", "0") soustrait = 2000000 End Select num13 = CCur(numéroSS) - soustrait 'Calcul de la clef ClefNumSS = Format(97 - (num13 - Int(num13 / 97) * 97), "00") End Function
Pour en savoir plus sur la création de fonctions Excel en VBA : http://www.auditsi.eu/?p=513
Derniers articles parBenoît RIVIERE (voir tous)
- Nouveautés de l’interpréteur de formules de calcul (v1.1) - dimanche 3 novembre 2024
- Dématérialisation de la facturation : nouvelles mentions obligatoires - lundi 28 octobre 2024
- Interpréteur de formules de calcul en Python - dimanche 13 octobre 2024
- Les données de la facturation électronique - mercredi 9 octobre 2024
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024
bonjour
j’ai voulu tester cette fonction qui m’intéressai
mai j’ai eu un problème en la lançant, le débogueur m’a affiché “erreur de compilitation erreur de syntaxe” à la ligne “numéroSS = Left(Replace(numéroSS, » « , « »), 13)”
(je suis sur Excel 2007)
du coup j’ai remplacé la fonction par une simple formule excel “=97-(A1-ENT(A1/97)*97)”
mais bien entendu elle n’est pas complète car elle ne gère pas les numéros corses
Bonjour,
Le problème vient des guillemets. Remplacez-les par les guillements de la touche 3. Lorsque j’ai fait le copier/coller pour mettre le programme dans mon article, les guillemets ont été remplacés par les guillemets de Word (« »).
Merci de votre message.
Cordialement,
B. RIVIERE
Pingback: EXCEL : Vérifier la validité d'un numéro SIREN - Audit & Systèmes d'Information
Pingback: SQL : Vérifier la validité d’un numéro SIREN - Audit & Systèmes d'Information