begin process at 2010 02 10 11:28:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > VÉRIFICATION DE LA VALIDITÉ DES CODES SIRET ET SIREN

VÉRIFICATION DE LA VALIDITÉ DES CODES SIRET ET SIREN


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :siret, siren, calcul, code, validation Niveau :Débutant Date de création :27/05/2007 Date de mise à jour :03/06/2007 10:24:13 Vu :26 806

Auteur : chaisol

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Après plusieurs recherches sur internet, je n'ai pas trouvé d'exemple en java pour tester la validité d'un code SIRET ou SIREN.
Je poste donc une petite class "SiretSiren.java" ainsi qu'une class de test pour ceux qui comme moi cherchent encore ;-), vos commentaires sont les bienvenues.

Je me suis inspiré du code javascript de "cgone" présent sur ce site à l'adresse "http://www.javascriptfr.com/codes/VERIFICATION-VA LIDITE-CODES-SIRET-SIREN-ALGO-LUHN_16330.aspx"
et de la définition du CNRS que vous trouverez à l'adresse suivante "http://www.dsi.cnrs.fr/bureau_qualite/admindonnee s/documents/siren.pdf"

Source

  • package com.compufirst.util;
  • /**
  • * @author COL - 27/05/2007
  • *
  • * numéro SIREN
  • * Il est composé de 8 chiffres, plus un chiffre de contrôle qui permet de vérifier la validité du numéro.
  • * La clé de contrôle utilisée pour vérifier de l'exactitude d'un identifiant est une clé "1-2". Le principe est
  • * le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2 ; la
  • * somme des chiffres obtenus doit être un multiple de 10.
  • * exemple : soit le SIREN 732 829 320
  • * pour vérifier : 7 3 2 8 2 9 3 2 0
  • * rang pair x 2 : 6 16 18 4
  • * rang impair x 1 : 7 2 2 3 0
  • * ----------------------
  • * somme : 7+6+2+1+6+2+1+8+3+4+0 = 40
  • * Le numéro est exact.
  • *
  • * numéro SIRET
  • * Le numéro d'identité d'établissement est articulé en deux parties : la première est le n° SIREN de la
  • * personne à laquelle appartient l'unité SIRET ; la seconde est un numéro d'ordre à 4 chiffres attribué à
  • * l'établissement suivi d'un chiffre de contrôle, qui permet de vérifier la validité de l'ensemble du numéro
  • * SIRET. Cette seconde partie est habituellement appelée NIC (numéro interne de classement).
  • * Méthode de vérification :
  • * Un SIRET est le résultat de la concaténation d'un numéro SIREN à 9 chiffres (dont la clé doit être
  • * vérifiée à part) et d'un numéro interne de classement (NIC) complété éventuellement à gauche par des
  • * zéros de façon que sa longueur soit de 4 chiffres. Le dernier et 14ème chiffre est une clé (1-2) qui
  • * porte sur les 13 premiers chiffres.
  • * On multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2 ; la somme
  • * des chiffres obtenus est un multiple de 10.
  • * Exemple :
  • * pour vérifier : 7 3 2 8 2 9 3 2 0 0 0 0 7 4
  • * rang pair x 2 : 14 4 4 6 0 0 14
  • * rang impair x 1 : 3 8 9 2 0 0 4
  • * -----------------------------------
  • * somme : 1+4+3+4+8+4+9+6+2+0+0+0+0+1+4+4=50
  • * Le numéro est exact. Il correspond au SIRET du 7ème établissement immatriculé par l'entreprise.
  • *
  • */
  • public class SiretSiren {
  • public static final String SIREN = "SIREN";
  • public static final String SIRET = "SIRET";
  • public static final String WRONGNUMBER = "WRONGNUMBER";
  • public static final String NOTANUMBER = "NOTANUMBER";
  • private String siretsiren;
  • private String type;
  • public SiretSiren(){
  • }
  • public SiretSiren(String siretsiren){
  • this.setSiretsiren(siretsiren);
  • }
  • private boolean isSirenSyntaxValide(String siren){
  • int total = 0;
  • int digit = 0;
  • for (int i = 0; i<siren.length(); i++) {
  • /** Recherche les positions paires : 2ème, 4ème, 6ème et 8ème chiffre que l'on multiplie par 2
  • * petite différence avec la définition ci-dessus car ici on travail de gauche à droite */
  • if ((i % 2) == 1) {
  • digit = Integer.parseInt(String.valueOf(siren.charAt(i))) * 2;
  • /** si le résultat est >9 alors il est composé de deux digits tous les digits devant
  • * s'additionner et ne pouvant être >19 le calcule devient : 1 + (digit -10) ou : digit - 9 */
  • if (digit > 9) digit -= 9;
  • }
  • else digit = Integer.parseInt(String.valueOf(siren.charAt(i)));
  • total += digit;
  • }
  • /** Si la somme est un multiple de 10 alors le SIREN est valide */
  • if ((total % 10) == 0) return true;
  • else return false;
  • }
  • private boolean isSiretSyntaxValide(String siret){
  • int total = 0;
  • int digit = 0;
  • for (int i = 0; i<siret.length(); i++) {
  • /** Recherche les positions impaires : 1er, 3è, 5è, etc... que l'on multiplie par 2
  • * petite différence avec la définition ci-dessus car ici on travail de gauche à droite */
  • if ((i % 2) == 0) {
  • digit = Integer.parseInt(String.valueOf(siret.charAt(i))) * 2;
  • /** si le résultat est >9 alors il est composé de deux digits tous les digits devant
  • * s'additionner et ne pouvant être >19 le calcule devient : 1 + (digit -10) ou : digit - 9 */
  • if (digit > 9) digit -= 9;
  • }
  • else digit = Integer.parseInt(String.valueOf(siret.charAt(i)));
  • total += digit;
  • }
  • /** Si la somme est un multiple de 10 alors le SIRET est valide */
  • if ((total % 10) == 0) return true;
  • else return false;
  • }
  • /**
  • * Méthode qui vérifie si la chaine passée est un nombre.
  • * Si le parse réussi alors c'est un nombre sinon une exception est levée
  • *
  • * @param aString
  • * @return true si c'est un chiffre, false dans le cas contraire
  • */
  • private boolean isNumber(String aString){
  • try{
  • Long.parseLong(aString);
  • return true;
  • }
  • catch(NumberFormatException nfe){
  • return false;
  • }
  • }
  • public boolean isEqualTo(String siretsiren){
  • if(this.siretsiren.equals(siretsiren)) return true;
  • else return false;
  • }
  • public boolean isEqualTo(SiretSiren siretsiren){
  • if(this.siretsiren.equals(siretsiren.getSiretsiren())) return true;
  • else return false;
  • }
  • @Override
  • public int hashCode() {
  • return this.getSiretsiren().hashCode();
  • }
  • public String getSiretsiren() {
  • return siretsiren;
  • }
  • /**
  • * Vérifie si le SIREN/SIRET passé, est un numérique à 9 ou 14 chiffres
  • * Identifie si le num passé est un SIREN ou un SIRET
  • * @param siretsiren (String)
  • * */
  • public void setSiretsiren(String siretsiren) {
  • this.siretsiren = siretsiren;
  • if(!this.isNumber(siretsiren)){
  • this.type = SiretSiren.NOTANUMBER;
  • }
  • else{
  • if(siretsiren.length()!=9 || siretsiren.length()!=14) this.type=SiretSiren.WRONGNUMBER;
  • if(siretsiren.length()==9) {
  • if(isSirenSyntaxValide(siretsiren))this.type = SiretSiren.SIREN;
  • else this.type=SiretSiren.WRONGNUMBER;
  • }
  • if(siretsiren.length()==14){
  • if(isSiretSyntaxValide(siretsiren)) this.type = SiretSiren.SIRET;
  • else this.type=SiretSiren.WRONGNUMBER;
  • }
  • }
  • }
  • public String getType() {
  • return type;
  • }
  • private void setType(String type) {
  • this.type = type;
  • }
  • }
  • /********************************************************************/
  • /** class de test ***************************************************/
  • /********************************************************************/
  • package com.compufirst.util;
  • public class TestSirenSiret {
  • public static void main(String[] args) {
  • SiretSiren siretSiren = new SiretSiren("732829320");
  • String type = siretSiren.getType();
  • System.out.println("SiretSiren = 732829320 getType ="+ type);
  • SiretSiren siretSiren2 = new SiretSiren();
  • siretSiren2.setSiretsiren("35152822900088");
  • String type2 = siretSiren2.getType();
  • System.out.println("SiretSiren = 35152822900088 getType ="+ type2);
  • boolean bool = siretSiren.isEqualTo(siretSiren2);
  • boolean bool1 = siretSiren.isEqualTo(siretSiren2.getSiretsiren());
  • boolean bool2 = siretSiren.isEqualTo("732829320");
  • System.out.println("siretSiren = siretSiren2 ? :"+ bool);
  • System.out.println("siretSiren = siretSiren2 ? :"+ bool1);
  • System.out.println("siretSiren = siretSiren2 ? :"+ bool2);
  • }
  • }
package com.compufirst.util;

/**
 * @author COL - 27/05/2007
 * 
 * numéro SIREN
 * Il est composé de 8 chiffres, plus un chiffre de contrôle qui permet de vérifier la validité du numéro.
 * La clé de contrôle utilisée pour vérifier de l'exactitude d'un identifiant est une clé "1-2". Le principe est
 * le suivant : on multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2 ; la
 * somme des chiffres obtenus doit être un multiple de 10.
 * exemple : soit le SIREN 732 829 320
 * pour vérifier :   7 3 2 8 2 9 3 2 0
 * rang pair x 2 :     6  16  18   4
 * rang impair x 1 : 7   2   2   3   0
 * ----------------------
 * somme : 7+6+2+1+6+2+1+8+3+4+0 = 40
 * Le numéro est exact.
 *
 * numéro SIRET
 * Le numéro d'identité d'établissement est articulé en deux parties : la première est le n° SIREN de la
 * personne à laquelle appartient l'unité SIRET ; la seconde est un numéro d'ordre à 4 chiffres attribué à
 * l'établissement suivi d'un chiffre de contrôle, qui permet de vérifier la validité de l'ensemble du numéro
 * SIRET. Cette seconde partie est habituellement appelée NIC (numéro interne de classement).
 * Méthode de vérification :
 * Un SIRET est le résultat de la concaténation d'un numéro SIREN à 9 chiffres (dont la clé doit être
 * vérifiée à part) et d'un numéro interne de classement (NIC) complété éventuellement à gauche par des
 * zéros de façon que sa longueur soit de 4 chiffres. Le dernier et 14ème chiffre est une clé (1-2) qui
 * porte sur les 13 premiers chiffres.
 * On multiplie les chiffres de rang impair à partir de la droite par 1, ceux de rang pair par 2 ; la somme
 * des chiffres obtenus est un multiple de 10.
 * Exemple :
 * pour vérifier :   7 3 2 8 2 9 3 2 0 0 0 0 7 4
 * rang pair x 2 :  14   4   4   6   0   0  14
 * rang impair x 1 :   3   8   9   2   0   0   4
 * -----------------------------------
 * somme : 1+4+3+4+8+4+9+6+2+0+0+0+0+1+4+4=50
 * Le numéro est exact. Il correspond au SIRET du 7ème établissement immatriculé par l'entreprise.
 *
 */

public class SiretSiren {
	
	public static final String SIREN = "SIREN";
	public static final String SIRET = "SIRET";
	public static final String WRONGNUMBER = "WRONGNUMBER";
	public static final String NOTANUMBER = "NOTANUMBER";
	
	private String siretsiren;
	private String type;

	public SiretSiren(){
	}
	
	public SiretSiren(String siretsiren){
		this.setSiretsiren(siretsiren);
	}
	
	private boolean isSirenSyntaxValide(String siren){
		int total = 0;
		int digit = 0;
		
		for (int i = 0; i<siren.length(); i++) {
			/** Recherche les positions paires : 2ème, 4ème, 6ème et 8ème chiffre que l'on multiplie par 2
			 * petite différence avec la définition ci-dessus car ici on travail de gauche à droite */
			if ((i % 2) == 1) {
				digit = Integer.parseInt(String.valueOf(siren.charAt(i))) * 2;
				/** si le résultat est >9 alors il est composé de deux digits tous les digits devant 
				 * s'additionner et ne pouvant être >19 le calcule devient : 1 + (digit -10) ou : digit - 9 */
				if (digit > 9) digit -= 9;
			}
			else digit = Integer.parseInt(String.valueOf(siren.charAt(i)));
			total += digit;
		}

		/** Si la somme est un multiple de 10 alors le SIREN est valide */
		if ((total % 10) == 0) return true;
		else return false;
	}
	
	private boolean isSiretSyntaxValide(String siret){
		int total = 0;
		int digit = 0;
		
		for (int i = 0; i<siret.length(); i++) {
			/** Recherche les positions impaires : 1er, 3è, 5è, etc... que l'on multiplie par 2
			 * petite différence avec la définition ci-dessus car ici on travail de gauche à droite */
			if ((i % 2) == 0) {
				digit = Integer.parseInt(String.valueOf(siret.charAt(i))) * 2;
				/** si le résultat est >9 alors il est composé de deux digits tous les digits devant 
				 * s'additionner et ne pouvant être >19 le calcule devient : 1 + (digit -10) ou : digit - 9 */
				if (digit > 9) digit -= 9;
			}
			else digit = Integer.parseInt(String.valueOf(siret.charAt(i)));
			total += digit;
		}
		/** Si la somme est un multiple de 10 alors le SIRET est valide */
		if ((total % 10) == 0) return true;
		else return false;
	}
	
	/**
	 * Méthode qui vérifie si la chaine passée est un nombre.
	 * Si le parse réussi alors c'est un nombre sinon une exception est levée
	 *  
	 * @param aString
	 * @return true si c'est un chiffre, false dans le cas contraire
	 */
	private boolean isNumber(String aString){
		try{
			Long.parseLong(aString);
			return true;
		}
		catch(NumberFormatException nfe){
			return false;
		}
	}

	public boolean isEqualTo(String siretsiren){
		if(this.siretsiren.equals(siretsiren)) return true;
		else return false;
	}
	
	public boolean isEqualTo(SiretSiren siretsiren){
		if(this.siretsiren.equals(siretsiren.getSiretsiren())) return true;
		else return false;
	}
	
	@Override
	public int hashCode() {
		return this.getSiretsiren().hashCode();
	}

	public String getSiretsiren() {
		return siretsiren;
	}

	/** 
	 * Vérifie si le SIREN/SIRET passé, est un numérique à 9 ou 14 chiffres 
	 * Identifie si le num passé est un SIREN ou un SIRET
	 * @param siretsiren (String)
	 * */
	public void setSiretsiren(String siretsiren) {
		this.siretsiren = siretsiren;
		
		if(!this.isNumber(siretsiren)){
			this.type = SiretSiren.NOTANUMBER;
		}
		else{
			if(siretsiren.length()!=9 || siretsiren.length()!=14) this.type=SiretSiren.WRONGNUMBER;
			if(siretsiren.length()==9) {
				if(isSirenSyntaxValide(siretsiren))this.type = SiretSiren.SIREN;
				else this.type=SiretSiren.WRONGNUMBER;
			}
			if(siretsiren.length()==14){
				if(isSiretSyntaxValide(siretsiren)) this.type = SiretSiren.SIRET;
				else this.type=SiretSiren.WRONGNUMBER;
			}
		}
	}

	public String getType() {
		return type;
	}

	private void setType(String type) {
		this.type = type;
	}
}

/********************************************************************/
/** class de test ***************************************************/
/********************************************************************/

package com.compufirst.util;

public class TestSirenSiret {

	public static void main(String[] args) {

		SiretSiren siretSiren  = new SiretSiren("732829320");
		String type = siretSiren.getType();
		System.out.println("SiretSiren = 732829320 getType ="+ type);
		
		SiretSiren siretSiren2 = new SiretSiren();
		siretSiren2.setSiretsiren("35152822900088");
		String type2 = siretSiren2.getType();
		System.out.println("SiretSiren = 35152822900088 getType ="+ type2);
		
		boolean bool = siretSiren.isEqualTo(siretSiren2);
		boolean bool1 = siretSiren.isEqualTo(siretSiren2.getSiretsiren());
		boolean bool2 = siretSiren.isEqualTo("732829320");
		System.out.println("siretSiren = siretSiren2 ? :"+ bool);
		System.out.println("siretSiren = siretSiren2 ? :"+ bool1);
		System.out.println("siretSiren = siretSiren2 ? :"+ bool2);
		
	}

}



 Historique

03 juin 2007 10:24:13 :
Pour plus de lisibilité, suite a la remarque de Neutrino216 j'ai renommé les variables de la class test, j'ai également déclaré en "public" les constantes de la class principale afin de faciliter l'écriture de test tel que : if{siretSiren.getType() == siretSiren.SIREN}

 Sources de la même categorie

Source avec Zip Source avec une capture TRADUCTEUR FRANÇAIS --> NERLANDAIS par edouard333
Source avec Zip IA POUR DISCUTER par edouard333
Source avec Zip Source avec une capture JSUBTITLE1.0 par darrylsite
Source avec Zip COMPILATEUR PASCAL par youma85
Source avec Zip CONTENEUR DE COMPOSANT HETEROGENES par mad_charif

 Sources en rapport avec celle ci

ADDITION ET SOUSTRACTION AVEC VIRGULE N CHIFFRES par alpha5
Source avec Zip EXEMPLE DE SAX POUR LA GÉNÉRATION DE CLASS JAVA À PARTIR D'U... par EspritMorne
Source avec Zip GENÉRATION D'UN CODE VHDL (FILTRE NUMÉRIQUE) par hfourati
Source avec Zip TEST SUR NOMBRES PREMIERS par amundain
CALCULATRICE SCIENTIFIQUE 2.0 par val_a_bertrand

Commentaires et avis

Commentaire de Twinuts le 27/05/2007 13:27:12 administrateur CS

Salut,

Question utilisation je ne vois pas trop ou je pourrais toper l'utilitée de ton code, mais une chose est sur c'est qu'il est propre, commenté aux bon endroits, et tu respectes les règles de nomage.
8/10

Commentaire de Neutrino216 le 31/05/2007 14:15:50

Salut,
Concernant le nommage des varaible. C'est mieux de donner des noms parlant par exemple
siern au lieu de s ou type au lieu de t. Et c'est plus lisible.

Commentaire de Twinuts le 31/05/2007 14:30:09 administrateur CS

Salut,

Neutrino216 tu chipote quand même il n'y a que dans l'exemple d'utilisation qu'il fait ça... mais bon sur le principe c'est pas faux ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calcul de nombre d'accolade [ par zeinebfki ] bonjour,j'ai un probléme qui consiste à délimiter les différents éléments d'un code en java.j'ai transformée le code en une chaine de caractére et je Calcul simultanné de moyennes en temps réel. [ par zinZ ] Bonjour, Je travail sur une application graphique qui affiche 6 courbes super posées. Deux curseurs peuvent être déplacé par l'utilisateur sur l'axe d Imprimer [ par kawtar_ch ] Bonjour!!je travaille sur netBeans et je voudrais imprimer une jDialog que j'ai créé, j'ai trouvé le code pour faire ceci, mais le problème est que je netbeans 6.0 [ par aymen85 ] salut, je suis entrain de réaliser des interface graphique avec netbeans 6 ,,mais je n'arrive pas à déverrouiller le code (le code est non modifiabl modification code [ par didoux95 ] Bonjour à tous.j'ai trouvé, sur internet, une méthode permettant de trouver un mot présent dans une phrase (ici, un texte relativement long).je ne par transfert de fichier d'une applet vers une servlet [ par vincedav31 ] Salut,Je suis débutant en java et je voudrais ecrire une applet qui envoi un fichier vers une servlet. La servlet l'enregistrera sur le disque du serv initiation servlet pendu [ par arthrax ] Bonjour ,Je dois faire un jeu du pendu en application web (servlet/jsp).J'ai réussi un peu près a faire le code en Java et maintenant je dois le trans html java [ par debutAmi ] j'ai IHM .j'ai ajouté un portail, mais les couleurs ne son pas les memes.comment récuperer le code des couleurs dejat existant dans les autres page(je JSP et deploiement [ par tortuegenie ] Bonjour, j'ai une question concernant le déploiement des JSP.Pour mon cas j'utilise Tomcat 6.0.14 pour le déploiement.J'ai crée un projet Web Dynamiqu jsp et code source [ par tortuegenie ] Bonjour, lorsque l'on livre une application Web dynamique dans une archive WAR à un client et qu'il "installe" cette archive sur son serveur, comment


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales