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.
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 :
- 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 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
Derniers articles parBenoît RIVIERE (voir tous)
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024
- L’IA dans les cabinets comptables : cas concrets - jeudi 26 septembre 2024
- 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
Pingback: EXCEL : Vérifier la validité d'un numéro SIRET - Audit & Systèmes d'Information
Pingback: EXCEL : Calculer la clef de contrôle d'un numéro SIRET - Audit & Systèmes d'Information