EXCEL : Vérifier la validité d’un numéro SIREN

Le numéro SIREN (Système d’Identification du Répertoire des ENtreprises) est un identifiant attribué à chaque entreprise en France. Son rôle est de permettre une identification unique et une traçabilité dans divers contextes administratifs et économiques.

Vérifie SIREN

Cependant, pour garantir la précision et l’intégrité des données, il est essentiel de vérifier la validité des numéros SIREN intégrés dans les bases de données (fiches tiers…). Dans cet article, nous fournirons une macro VBA pour faciliter ce processus de vérification après un rapide propos introductif sur l’histoire de la création du SIREN.

Histoire du numéro SIREN

Le numéro SIREN a été introduit en France en 1973 pour simplifier l’identification des entreprises et faciliter leur suivi administratif.

Composé de 9 chiffres, il identifie de manière unique chaque entreprise enregistrée, quelle que soit sa forme juridique. Le SIREN est utilisé dans de multiples domaines, tels que les déclarations fiscales, la gestion comptable et commerciale (identification des partenaires commerciaux)…

Composition du numéro SIREN

Les huit premiers chiffres du numéro SIREN identifient l’entreprise et le neuvième, calculé à partir des huit premiers, constitue la clef de contrôle. C’est la cohérence entre les huit premiers chiffres et la clef de contrôle qu’il convient de vérifier. La clef (ou somme) de contrôle est calculée selon l’algorithme de Luhn.

L’algorithme de Luhn

L’algorithme de Luhn, également connu sous le nom d’algorithme de Mod 10, est une méthode couramment utilisée pour vérifier l’intégrité des numéros d’identification.  Il a été créé dans les années 60 par un ingénieur allemand nommé Hans Peter LUHN alors qu’il travaillait comme chercheur chez IBM, et sa notoriété prit forme lorsque les banques l’adoptèrent pour vérifier la validité des numéros de cartes de crédit. Il repose sur un calcul de somme de contrôle pour détecter les erreurs de saisie ou de transmission. Il est donc utilisé pour valider les numéros de cartes bancaires mais aussi les numéros de sécurité sociale, IMEI (téléphones portables), SIREN et SIRET, de TVA intracommunautaire…

Pour vérifier une somme de contrôle d’un numéro SIREN, cet algorithme repose sur les étapes de calcul suivantes :

  1. Doubler un chiffre sur deux (position paire) en partant de la droite vers gauche. Si le résultat donne un nombre à deux chiffres, soustraire 9 pour obtenir un seul chiffre ;
  2. Additionner ensemble tous les numéros obtenus lors de l’étape 1  ;
  3. Additionner tous les chiffres position impaire de droite à gauche ;
  4. Additionner les résultats des étapes 2 et 3 ;
  5. Si le résultat de l’étape 4 est divisible par 10, le numéro SIREN testé est valide sinon, il est invalide.

Cet algorithme est assez simple à programmer.

>>> Autre exemple d’application de l’algorithme de Luhn : contrôle de la validité d’un numéro de Sécurité sociale / calcul du numéro de TVA intracommunautaire à partir d’un numéro SIREN.

Macro VBA de contrôle de la validité du numéro SIREN

La fonction VérifieClefLuhn_SIREN vérifie la somme de contrôle d’un numéro SIREN et renvoie TRUE (Vrai) si le numéro est conforme, FALSE (Faux) dans le cas contraire.

Exemple d’utilisation dans un classeur Excel :

=VérifieClefLuhn_SIREN(“312212301”)

Dans le cas présent, cette formule de calcul Excel renvoie Vrai.

Le fichier Excel est téléchargeable ci-après.

Code-source de la macro :

'----------------------------------------------------------------------------------
'
' Contrôle de la validité d'un numéro SIREN
'
' Infos : https://www.auditsi.eu/?p=11607
'
'----------------------------------------------------------------------------------


Option Explicit


'----------------------------------------------------------------------------------
'Algorithme de Luhn applicable aux numéros SIREN et SIRET
'----------------------------------------------------------------------------------


'Vérifie la clef de contrôle d'une chaîne (qui contient la clef) selon l'algorithme de Luhn
Private Function VérifieClefLuhn(Chaîne As String) As Boolean
    'Déclaration des variables
    Dim LongueurChaîne As Integer
    Dim i As Integer
    Dim Position As Integer
    Dim Chiffre As Integer
    Dim Addition As Integer
        
    'Calcule le nombre de caractères de la Chaîne
    LongueurChaîne = Len(Chaîne)
    
    Addition = 0
    Position = 0
    
    'Parcourt chaque chiffre de la variable Chaîne de droite à gauche
    For i = LongueurChaîne To 1 Step -1
        Position = Position + 1
        
        'Lit le chiffre en cours (position i dans la Chaîne)
        Chiffre = CInt(Mid(Chaîne, i, 1))
        
        'Si la position est paire (à partir de la droite), multiplier par 2
        If Position Mod 2 = 0 Then 'si le reste de la division i/2= 0 -> position paire sinon impaire
            Chiffre = Chiffre * 2
            'Si le résultat de la multiplication est supérieur à 9, soustraire 9
            If Chiffre > 9 Then
                Chiffre = Chiffre - 9
            End If
        End If
        
        'Additionne les chiffres au fur et à mesure de l'exécution de la boucle (impairs*2 + pairs)
        Addition = Addition + Chiffre
    Next i
    
    'Calcule la clef de contrôle
    VérifieClefLuhn = (Addition Mod 10) = 0
End Function


'Vérifie la validité de la clef contenue dans un numéro SIREN
'   Valeur de retour :
'       - VRAI : clef correcte
'       - FAUX : clef erronnée ou longueur du numéro SIREN fourni <> 9
Function VérifieClefLuhn_SIREN(Chaîne As String) As Boolean
    Select Case Len(Chaîne)
        Case 9:
            VérifieClefLuhn_SIREN = VérifieClefLuhn(Chaîne)
        Case Else:
            VérifieClefLuhn_SIREN = False
    End Select
End Function

A noter, cette macro ne vérifie pas l’existence du numéro SIREN mais seulement la cohérence entre les huit premiers chiffres et la clef de contrôle.

___

Approfondir le sujet : SIREN / Information légale des entreprises

Share Button
Contrôle Validité N° SIREN (Luhn)
Contrôle Validité N° SIREN (Luhn)
Controle-validite-n%C2%B0-SIREN-Luhn.xlsm
17 KiB
97 téléchargements
Détails...
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

2 commentaires

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

  2. Pingback: EXCEL : Calculer la clef de contrôle d'un numéro SIRET - 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.