Le numéro SIRET (Système d’Identification du Répertoire des ETablissements) est un identifiant attribué à chaque établissement d’une entreprise par l’INSEE. Il a été créé dans le but de simplifier l’identification et la gestion administrative des entreprises et de leurs établissements.
Cependant, pour garantir la précision et l’intégrité des données, il est essentiel de vérifier la validité des numéros SIRET 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 SIRET.
Histoire et composition du numéro SIRET
Tout comme le numéro SIREN, le numéro SIRET a été introduit en France en 1973 pour simplifier l’identification des établissements et faciliter leur suivi administratif. Il identifie de manière unique chaque établissement d’une entreprise. Le SIRET est utilisé dans de multiples domaines, tels que les déclarations fiscales, la gestion comptable et commerciale (identification des partenaires commerciaux)…
Composé de 14 chiffres, le numéro SIRET combine :
- Le numéro SIREN (identifiant de l’entreprise) sur neuf chiffres ;
- Suivi du Numéro Interne de Classement (NIC) propre qui identifie l’établissement (de 1 à 9999) sur quatre positions ;
- Puis d’une somme de contrôle (sur une position) calculée à partir des treize premiers (SIREN+NIC) selon l’algorithme de Luhn.
C’est la cohérence entre les treize premiers chiffres et la clef de contrôle qu’il convient de vérifier.
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 SIRET, cet algorithme repose sur les étapes de calcul suivantes :
- 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 ;
- Additionner ensemble tous les numéros obtenus lors de l’étape 1 ;
- Additionner tous les chiffres position impaire de droite à gauche ;
- Additionner les résultats des étapes 2 et 3 ;
- Si le résultat de l’étape 4 est divisible par 10, le numéro SIRET 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 SIREN / 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 SIRET
La fonction VérifieClefLuhn_SIRET vérifie la somme de contrôle d’un numéro SIRET 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_SIRET(“31221230102001”)
Dans le cas présent, cette formule de calcul Excel renvoie Vrai.
Le fichier Excel comprenant la macro VBA est téléchargeable ci-après.
Code-source de la macro VBA :
'---------------------------------------------------------------------------------- ' ' Contrôle de la validité d'un numéro SIREN / SIRET ' ' Infos : ' SIREN : https://www.auditsi.eu/?p=11607 ' SIRET : https://www.auditsi.eu/?p=11612 ' '---------------------------------------------------------------------------------- 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 'Vérifie la validité de la clef contenue dans un numéro SIRET ' Valeur de retour : ' - VRAI : clef correcte ' - FAUX : clef erronnée ou longueur du numéro SIRET fourni <> 14 Function VérifieClefLuhn_SIRET(Chaîne As String) As Boolean Select Case Len(Chaîne) Case 14: VérifieClefLuhn_SIRET = VérifieClefLuhn(Chaîne) Case Else: VérifieClefLuhn_SIRET = False End Select End Function
A noter, cette macro ne vérifie pas l’existence du numéro SIRET mais seulement la cohérence entre les huit premiers chiffres et la clef de contrôle.
___
Approfondir le sujet : SIRET / SIREN / Information légale des entreprises
Derniers articles parBenoît RIVIERE (voir tous)
- EXCEL : insérer une image ou un logo dans une cellule - lundi 16 septembre 2024
- Lancer l’exécution d’un script Python à partir d’une macro VBA - lundi 9 septembre 2024
- Open Data : quoi de neuf ? - lundi 2 septembre 2024
- Auditsi cité dans le podcast Marketing du cabinet comptable - mercredi 21 août 2024
- IA générative : aide à la rédaction de prompts efficaces - samedi 17 août 2024