Validité d'un numéro siren [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
5
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
9 février 2005
-
Slt.
Je cherche à contrôler la validité d'un numéro siren dans un formulaire. J'ai trouvé ce script (ci-dessous), mais il semble rejetter TOUS les numéros siren, y compris les valides...Qq pour mayday ?
Merci.

<html>
<head>
<title>test siren</title>
<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 ( (window.document.form1.siren.length != 9) || (isNaN(siren)) ) {
estValide = false;
alert ("Votre code siren n'est pas valable. Veuillez le ré-entrer SVP. Merci");
window.document.form1.siren.focus();
}
else {
// Donc le SIREN est un numérique à 9 chiffres
var somme = 0;
var tmp;
for (var cpt = 0; cpt<window.document.form1.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;
alert ("Votre code siren n'est pas valable. Veuillez le réentrer SVP. Merci");
window.document.form1.siren.focus();
}
return estValide;
}
-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

SIREN
<form name="form1" method="post" action="" onsubmit="EstSirenValide(siren)">

</form>

</html>

8 réponses

Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008

le code revu et corrige ;)

<html>
<head>
<title>test siren</title>
<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(sirenq) {
var estValide;
if ( (sirenq.length != 9) || (isNaN(sirenq)) ) {
estValide = false;
alert ("Votre code siren n'est pas valable. Veuillez le ré-entrer SVP. Merci");
window.document.form1.siren.focus();
}
else {
// Donc le SIREN est un numérique à 9 chiffres
var somme = 0;
var tmp;
for (var cpt = 0; cpt<sirenq.length; cpt++) {
if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
tmp = sirenq.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 = sirenq.charAt(cpt);
somme += parseInt(tmp);
}
if ((somme % 10) == 0) {
estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide
alert ("Votre code siren est valable. Merci");
}else {
estValide = false;
alert ("Votre code siren n'est pas valable. Veuillez le réentrer SVP. Merci");
window.document.form1.siren.focus(); }
}
return estValide;
}
-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

SIREN
<form name="form1" method="post" action="" onsubmit="EstSirenValide(siren.value)">

</form>

</html>
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008

siren est devenu sirenq pour eliminer le risque (potentiel, non verifie) d'interaction entre le nom de l'input type et la variable
la modif majeure est le passage de "siren.value" lors de l'appel de la fonction et non pas de siren qui se trouve etre un objet.
Messages postés
290
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
25 avril 2008

peux-tu donner un numéro siren valide pour tester la validité du code
Messages postés
5
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
9 février 2005

Slt.

Voici un n° siren valide :
783953151

@+.
Messages postés
35
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
22 mai 2013

Pour le calcul de la cléf et explications :
voir sur :
http://www.dsi.cnrs.fr/conduite-projet/phasedeveloppement/technique/etude-detaillee/modele-de-donnees/regles-SIREN-SIRET.doc
ou sur :
http://www.google.fr/search?q=cache:iE3uF15n-_4J:www.dsi.cnrs.fr/conduite-projet/phasedeveloppement/technique/etude-detaillee/modele-de-donnees/regles-SIREN-SIRET.doc+siren&hl=fr&lr=lang_fr

D'autres infos, mais pas le mode de calcul de la clé :
http://www.motamot.com/zoompages/siret.html
http://www.sirene.tm.fr/pages/comprendre_concepts.asp?contenu=defnomenc#siren

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quand je ne dit rien, c'est que je ne sais pas.
Quand je demande c'est que je n'ai pas trouvé.
Quand je renseigne, c'est que le pense savoir
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Messages postés
35
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
22 mai 2013

ici il est possible de vérifier la validité et l'existance d'un n°
http://www.cofacerating.fr/portail/recherche_entreprise_inter/recherche_entreprise.asp?metier=ALL&geo=ALL&idnav=dc3e5c19af007506e1f73f3c2118c56a&J=03/11/2004&H=10:28:25&tp=1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quand je ne dit rien, c'est que je ne sais pas.
Quand je demande c'est que je n'ai pas trouvé.
Quand je renseigne, c'est que le pense savoir
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Messages postés
5
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
9 février 2005

Super !
Mais bon une question qd même :
Je ne suis pas très fort en javascript (en fait mon truc moi c les gaufres...) et je ne comprends pas pk siren et devenu sirenq ds ton script corrigé ?

En tous cas, merci et bravo !
Messages postés
5
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
9 février 2005

Ben alors tout est dit, avec classe en plus. Encore merci Mr RoxxoR.#~D)
@+