Vérification de la validité des codes siret et siren (algo. de luhn)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 61 290 fois - Téléchargée 26 fois

Contenu du snippet

Ce sont deux petites fonctions qui permettent de vérifier la validité des codes SIRET et SIREN des entreprises en utilisant l'algorithme de LUHN.

Source / Exemple :


<script language="javascript">
<!--
  /**

  • @name EstSirenValide
  • @param Le code SIREN dont on veut vérifier la validité.
  • @return Un booléen qui vaut 'true' si le code SIREN passé en
  • paramètre est valide, false sinon.
  • /
function EstSirenValide(siren) { var estValide; if ( (siren.length != 9) || (isNaN(siren)) ) estValide = false; else { // Donc le SIREN est un numérique à 9 chiffres var somme = 0; var tmp; for (var cpt = 0; cpt<siren.length; cpt++) { if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre tmp = siren.charAt(cpt) * 2; // On le multiplie par 2 if (tmp > 9) tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9 } else tmp = siren.charAt(cpt); somme += parseInt(tmp); } if ((somme % 10) == 0) estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide else estValide = false; } return estValide; } /**
  • @name EstSiretValide
  • @param Le code SIRET dont on veut vérifier la validité.
  • @return Un booléen qui vaut 'true' si le code SIRET passé en
  • paramètre est valide, false sinon.
  • /
function EstSiretValide(siret) { var estValide; if ( (siret.length != 14) || (isNaN(siret)) ) estValide = false; else { // Donc le SIRET est un numérique à 14 chiffres // Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants // correspondent au numéro d'établissement // et enfin le dernier chiffre est une clef de LUHN. var somme = 0; var tmp; for (var cpt = 0; cpt<siret.length; cpt++) { if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc... tmp = siret.charAt(cpt) * 2; // On le multiplie par 2 if (tmp > 9) tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9 } else tmp = siret.charAt(cpt); somme += parseInt(tmp); } if ((somme % 10) == 0) estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide else estValide = false; } return estValide; } --> </script>

A voir également

Ajouter un commentaire

Commentaires

Nice, merci beaucoup pour ce partage !
Messages postés
6
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
29 novembre 2010

Super ce bout de code! Merci à cgone :)

KeuYA j'ai analysé le code il n'y a aucune erreur. La variable tmp est bien ajouté à la variable somme.

On a:
somme += parseInt(tmp);

Qui se trouve en dehors du else qu'il y a juste avant, donc dans la boucle for uniquement. Que l'on passe par le if ou le else cette ligne sera toujours prise en compte à l'exécution de ce code.

Je tenais à le préciser, car j'ai douté de ce bout de code comme je débute également en javascript :P

J'espère que depuis le temps tu n'es plus débutant KeuYA ^^'

Bonne journée à tous est encore merci pour ce bout de code fort intéressant!!! :D
Messages postés
2
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
21 novembre 2008

Je débute totalement en programmation, mais il me semble qu'il y a une erreur dans ce code, car la variable tmp n'est pas ajouté a la variable somme pour les chiffres impairs lors de la vérification du numéro siret. Et comme ce code ne fonctionne pas chez moi je me dis que ça vient peut être de ça. Voila donc c'était pour mettre en garde les personnes qui seraient amenées a utiliser ce code, en attendant que quelqu'un confirme ou me dise que je dis n'importe quoi! x)
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
1
merci, je le cherchais justement
Messages postés
2
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
11 mars 2008

Alors ça, c'est du code qui est trèèèès utile ;-)
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.