{"id":11612,"date":"2023-10-02T06:43:15","date_gmt":"2023-10-02T04:43:15","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=11612"},"modified":"2023-08-21T13:46:33","modified_gmt":"2023-08-21T11:46:33","slug":"excel-verifier-la-validite-dun-numero-siret","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=11612","title":{"rendered":"EXCEL : V\u00e9rifier la validit\u00e9 d&#8217;un num\u00e9ro SIRET"},"content":{"rendered":"<p style=\"text-align: justify;\">Le <strong>num\u00e9ro SIRET<\/strong> (Syst\u00e8me d&#8217;Identification du R\u00e9pertoire des ETablissements) est un identifiant attribu\u00e9 \u00e0 chaque \u00e9tablissement d&#8217;une entreprise par l&#8217;INSEE. Il a \u00e9t\u00e9 cr\u00e9\u00e9 dans le but de simplifier l&#8217;identification et la gestion administrative des entreprises et de leurs \u00e9tablissements.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11623\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/08\/Verifie-SIRET.png\" alt=\"V\u00e9rifie SIRET\" width=\"610\" height=\"295\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/08\/Verifie-SIRET.png 610w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2023\/08\/Verifie-SIRET-300x145.png 300w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<p style=\"text-align: justify;\">Cependant, pour garantir la pr\u00e9cision et l&#8217;int\u00e9grit\u00e9 des donn\u00e9es, il est essentiel de <strong>v\u00e9rifier la validit\u00e9<\/strong> des num\u00e9ros SIRET int\u00e9gr\u00e9s dans les bases de donn\u00e9es (fiches tiers&#8230;). Dans cet article, nous fournirons une <strong>macro VBA<\/strong> pour faciliter ce processus de v\u00e9rification apr\u00e8s un rapide propos introductif sur l&#8217;histoire de la cr\u00e9ation du SIRET.<\/p>\n<p style=\"text-align: justify;\"><strong><em>Histoire et composition du num\u00e9ro SIRET<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">Tout comme le <a href=\"https:\/\/www.auditsi.eu\/?p=11607\">num\u00e9ro SIREN<\/a>, le num\u00e9ro SIRET a \u00e9t\u00e9 <strong>introduit<\/strong> en France <strong>en 1973<\/strong> pour simplifier l&#8217;identification des \u00e9tablissements et faciliter leur suivi administratif. Il <strong>identifie de mani\u00e8re unique chaque \u00e9tablissement<\/strong> d&#8217;une entreprise. Le SIRET est utilis\u00e9 dans de multiples domaines, tels que les d\u00e9clarations fiscales, la gestion comptable et commerciale (identification des partenaires commerciaux)&#8230;<\/p>\n<p style=\"text-align: justify;\">Compos\u00e9 de 14 chiffres, le <strong>num\u00e9ro SIRET combine<\/strong> :<\/p>\n<ul>\n<li style=\"text-align: justify;\">Le <strong>num\u00e9ro SIREN<\/strong> (identifiant de l&#8217;entreprise) sur neuf chiffres ;<\/li>\n<li style=\"text-align: justify;\">Suivi du <strong>Num\u00e9ro Interne de Classement (NIC)<\/strong> propre qui identifie l&#8217;\u00e9tablissement (de 1 \u00e0 9999) sur quatre positions ;<\/li>\n<li style=\"text-align: justify;\">Puis d&#8217;une <strong>somme de contr\u00f4le<\/strong> (sur une position) calcul\u00e9e \u00e0 partir des treize premiers (SIREN+NIC) selon l&#8217;algorithme de Luhn.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">C&#8217;est la coh\u00e9rence entre les treize premiers chiffres et la clef de contr\u00f4le qu&#8217;il convient de v\u00e9rifier.<\/p>\n<p style=\"text-align: justify;\"><strong><em>L&#8217;algorithme de Luhn<\/em><\/strong><\/p>\n<p style=\"text-align: justify;\">L&#8217;algorithme de Luhn, \u00e9galement connu sous le nom d&#8217;algorithme de Mod 10, est une m\u00e9thode couramment utilis\u00e9e pour <strong>v\u00e9rifier l&#8217;int\u00e9grit\u00e9 des num\u00e9ros d&#8217;identification<\/strong>. &nbsp;Il a \u00e9t\u00e9 cr\u00e9\u00e9 dans les ann\u00e9es 60 par un ing\u00e9nieur allemand nomm\u00e9 Hans Peter LUHN alors qu\u2019il travaillait comme chercheur chez IBM, et sa notori\u00e9t\u00e9 prit forme lorsque les banques l\u2019adopt\u00e8rent pour v\u00e9rifier la validit\u00e9 des num\u00e9ros de cartes de cr\u00e9dit. Il repose sur un calcul de somme de contr\u00f4le pour d\u00e9tecter les erreurs de saisie ou de transmission. Il est donc utilis\u00e9 pour valider les num\u00e9ros de cartes bancaires mais aussi les num\u00e9ros de s\u00e9curit\u00e9 sociale, IMEI (t\u00e9l\u00e9phones portables), SIREN et SIRET, de TVA intracommunautaire&#8230;<\/p>\n<p style=\"text-align: justify;\">Pour <strong>v\u00e9rifier une somme de contr\u00f4le<\/strong> d&#8217;un num\u00e9ro SIRET, cet algorithme repose sur les \u00e9tapes de calcul suivantes :<\/p>\n<ol>\n<li>Doubler un chiffre sur deux (position paire) en partant de la droite vers gauche. Si le r\u00e9sultat donne un nombre \u00e0 deux chiffres, soustraire 9 pour obtenir un seul chiffre ;<\/li>\n<li>Additionner ensemble tous les num\u00e9ros obtenus lors de l&#8217;\u00e9tape 1&nbsp; ;<\/li>\n<li>Additionner tous les chiffres position impaire de droite \u00e0 gauche ;<\/li>\n<li>Additionner les r\u00e9sultats des \u00e9tapes 2 et 3 ;<\/li>\n<li>Si le r\u00e9sultat de l&#8217;\u00e9tape 4 est divisible par 10, le num\u00e9ro SIRET test\u00e9 est valide sinon, il est invalide.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Cet algorithme est assez simple \u00e0 programmer.<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #993366;\"><em><strong>&gt;&gt;&gt;<\/strong><\/em><\/span> Autre exemple d&#8217;application de l&#8217;algorithme de Luhn : <a href=\"https:\/\/www.auditsi.eu\/?p=11607\">contr\u00f4le de la validit\u00e9 d\u2019un num\u00e9ro SIREN<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?p=1217\">contr\u00f4le de la validit\u00e9 d\u2019un num\u00e9ro de S\u00e9curit\u00e9 sociale<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?p=6739\">calcul du num\u00e9ro de TVA intracommunautaire \u00e0 partir d&#8217;un num\u00e9ro SIREN<\/a>.<\/p>\n<p><em><strong>Macro VBA de contr\u00f4le de la validit\u00e9 du num\u00e9ro SIRET<\/strong> <\/em><\/p>\n<p style=\"text-align: justify;\">La fonction V\u00e9rifieClefLuhn_SIRET v\u00e9rifie la somme de contr\u00f4le d&#8217;un num\u00e9ro SIRET et renvoie TRUE (Vrai) si le num\u00e9ro est conforme, FALSE (Faux) dans le cas contraire.<\/p>\n<p style=\"text-align: justify;\">Exemple d&#8217;utilisation dans un classeur Excel :<\/p>\n<p style=\"text-align: center;\">=V\u00e9rifieClefLuhn_SIRET(&#8220;31221230102001&#8221;)<\/p>\n<p style=\"text-align: justify;\">Dans le cas pr\u00e9sent, cette formule de calcul Excel renvoie Vrai.<\/p>\n<p style=\"text-align: justify;\">Le fichier Excel comprenant la macro VBA est t\u00e9l\u00e9chargeable ci-apr\u00e8s.<\/p>\n<p style=\"text-align: justify;\">Code-source de la macro VBA :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">'----------------------------------------------------------------------------------\r\n'\r\n' Contr\u00f4le de la validit\u00e9 d'un num\u00e9ro SIREN \/ SIRET\r\n'\r\n' Infos :\r\n'       SIREN : https:\/\/www.auditsi.eu\/?p=11607\r\n'       SIRET : https:\/\/www.auditsi.eu\/?p=11612\r\n'\r\n'----------------------------------------------------------------------------------\r\n\r\n\r\nOption Explicit\r\n\r\n\r\n'----------------------------------------------------------------------------------\r\n'Algorithme de Luhn applicable aux num\u00e9ros SIREN et SIRET\r\n'----------------------------------------------------------------------------------\r\n\r\n\r\n'V\u00e9rifie la clef de contr\u00f4le d'une cha\u00eene (qui contient la clef) selon l'algorithme de Luhn\r\nPrivate Function V\u00e9rifieClefLuhn(Cha\u00eene As String) As Boolean\r\n    'D\u00e9claration des variables\r\n    Dim LongueurCha\u00eene As Integer\r\n    Dim i As Integer\r\n    Dim Position As Integer\r\n    Dim Chiffre As Integer\r\n    Dim Addition As Integer\r\n        \r\n    'Calcule le nombre de caract\u00e8res de la Cha\u00eene\r\n    LongueurCha\u00eene = Len(Cha\u00eene)\r\n    \r\n    Addition = 0\r\n    Position = 0\r\n    \r\n    'Parcourt chaque chiffre de la variable Cha\u00eene de droite \u00e0 gauche\r\n    For i = LongueurCha\u00eene To 1 Step -1\r\n        Position = Position + 1\r\n        \r\n        'Lit le chiffre en cours (position i dans la Cha\u00eene)\r\n        Chiffre = CInt(Mid(Cha\u00eene, i, 1))\r\n        \r\n        'Si la position est paire (\u00e0 partir de la droite), multiplier par 2\r\n        If Position Mod 2 = 0 Then 'si le reste de la division i\/2= 0 -&gt; position paire sinon impaire\r\n            Chiffre = Chiffre * 2\r\n            'Si le r\u00e9sultat de la multiplication est sup\u00e9rieur \u00e0 9, soustraire 9\r\n            If Chiffre &gt; 9 Then\r\n                Chiffre = Chiffre - 9\r\n            End If\r\n        End If\r\n        \r\n        'Additionne les chiffres au fur et \u00e0 mesure de l'ex\u00e9cution de la boucle (impairs*2 + pairs)\r\n        Addition = Addition + Chiffre\r\n    Next i\r\n    \r\n    'Calcule la clef de contr\u00f4le\r\n    V\u00e9rifieClefLuhn = (Addition Mod 10) = 0\r\nEnd Function\r\n\r\n\r\n'V\u00e9rifie la validit\u00e9 de la clef contenue dans un num\u00e9ro SIREN\r\n'   Valeur de retour :\r\n'       - VRAI : clef correcte\r\n'       - FAUX : clef erronn\u00e9e ou longueur du num\u00e9ro SIREN fourni &lt;&gt; 9\r\nFunction V\u00e9rifieClefLuhn_SIREN(Cha\u00eene As String) As Boolean\r\n    Select Case Len(Cha\u00eene)\r\n        Case 9:\r\n            V\u00e9rifieClefLuhn_SIREN = V\u00e9rifieClefLuhn(Cha\u00eene)\r\n        Case Else:\r\n            V\u00e9rifieClefLuhn_SIREN = False\r\n    End Select\r\nEnd Function\r\n\r\n\r\n'V\u00e9rifie la validit\u00e9 de la clef contenue dans un num\u00e9ro SIRET\r\n'   Valeur de retour :\r\n'       - VRAI : clef correcte\r\n'       - FAUX : clef erronn\u00e9e ou longueur du num\u00e9ro SIRET fourni &lt;&gt; 14\r\nFunction V\u00e9rifieClefLuhn_SIRET(Cha\u00eene As String) As Boolean\r\n    Select Case Len(Cha\u00eene)\r\n        Case 14:\r\n            V\u00e9rifieClefLuhn_SIRET = V\u00e9rifieClefLuhn(Cha\u00eene)\r\n        Case Else:\r\n            V\u00e9rifieClefLuhn_SIRET = False\r\n    End Select\r\nEnd Function<\/pre>\n<p style=\"text-align: justify;\">A noter, cette macro ne v\u00e9rifie pas l&#8217;existence du num\u00e9ro SIRET mais seulement la coh\u00e9rence entre les huit premiers chiffres et la clef de contr\u00f4le.<\/p>\n<p style=\"text-align: justify;\">___<\/p>\n<p style=\"text-align: justify;\">Approfondir le sujet : <a href=\"https:\/\/www.auditsi.eu\/?tag=siret\">SIRET<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?tag=siren\">SIREN<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?p=9269\">Information l\u00e9gale des entreprises<\/a><\/p>\n<div id=\"sconnect-is-installed\" style=\"display: none; text-align: justify;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"EXCEL%20%3A%20V%C3%A9rifier%20la%20validit%C3%A9%20d%27un%20num%C3%A9ro%20SIRET\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Le num\u00e9ro SIRET (Syst\u00e8me d&#8217;Identification du R\u00e9pertoire des ETablissements) est un identifiant attribu\u00e9 \u00e0 chaque \u00e9tablissement d&#8217;une entreprise par l&#8217;INSEE. Il a \u00e9t\u00e9 cr\u00e9\u00e9 dans le but de simplifier l&#8217;identification et la gestion administrative des entreprises et de leurs \u00e9tablissements. Cependant, pour garantir la pr\u00e9cision et l&#8217;int\u00e9grit\u00e9 des donn\u00e9es, il est essentiel de v\u00e9rifier la &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=11612\" class=\"more-link\">Continue reading &lsquo;EXCEL : V\u00e9rifier la validit\u00e9 d&#8217;un num\u00e9ro SIRET&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"EXCEL%20%3A%20V%C3%A9rifier%20la%20validit%C3%A9%20d%27un%20num%C3%A9ro%20SIRET\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[48,46],"tags":[2979,522,523,2456,1788,519,233,900,2981,901,2978,1784,2358,2359,2980,1641],"class_list":["post-11612","post","type-post","status-publish","format-standard","hentry","category-excel","category-integrite-des-donnees-systeme-informatique","tag-checksum","tag-clef-de-controle","tag-controle-de-coherence","tag-fonction","tag-formule-de-luhn","tag-insee","tag-len","tag-mod","tag-mod-10","tag-modulo","tag-nic","tag-siren","tag-sirene","tag-siret","tag-somme-de-controle","tag-vba"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11612"}],"version-history":[{"count":4,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11612\/revisions"}],"predecessor-version":[{"id":11625,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/11612\/revisions\/11625"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}