Cycle Personnel : contrôler la validité d’un numéro de Sécurité sociale

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

Share Button
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

4 commentaires

  1. 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

  2. Pingback: EXCEL : Vérifier la validité d'un numéro SIREN - Audit & Systèmes d'Information

  3. Pingback: SQL : Vérifier la validité d’un numéro SIREN - Audit & Systèmes d'Information

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.