Vérification du numéro de tva intracommunautaire d'une société

Contenu du snippet

Un petit test pour s'assurer qu'un numéro de TVA intracommunautaire est correct.

La vérification est faite dans les grandes lignes, il n'y a pas par exemple aucune vérification du n° SIREN pour une entreprise française. Cette vérification se base sur la liste suivante :
http://www.eic.ccip.fr/informations/tva/tva2.htm#som04

Le code source comprend trois fonctions :
- test_tva_valide
- test_tva_valide_ou_vide
- test_champ_vide

La première vérifie le n° de TVA intracommunautaire, la seconde fait la même chose mais accepte que le champ soit vide (si le formulaire n'est pas réservé aux entreprises par exemple), et la dernière teste simplement si le champ est vide ou non.

Elles prennent toutes 2 paramètres :
- le nom du champ (obligatoire) a testé.
- un message (optionnel) a affiché en cas d'erreur. On peut donc mettre un message dans la langue de son choix (pratique pour les sites multlingues). Voici un exemple de message ' n\'est pas un n° de TVA valide. Veuillez-le corriger...'

Source / Exemple :


function test_tva_valide(champ, message)
{
        var tva_intra = champ.value;
	// Pour la constitution de l'expression régulière, voir sur http://www.eic.ccip.fr/informations/tva/tva2.htm#som04
	// Pour les vieilles casseroles (ou navigateurs antédiluviens), remplacer \d par [0-9] et [A-Z\d] par [A-Z0-9]
        var motif = /^(RO\d{2,10}|GB\d{5}|(ATU|DK|FI|HU|LU|MT|CZ|SI)\d{8}|IE[A-Z\d]{8}|(DE|BG|EE|EL|LT|BE0|PT|CZ)\d{9}|CY\d{8}[A-Z]|(ES|GB)[A-Z\d]{9}|(BE0|PL|SK|CZ)\d{10}|(FR|IT|LV)\d{11}|(LT|SE)\d{12}|(NL|GB)[A-Z\d]{12})$/;
        if (window.RegExp)
        {
                if (!motif.test(tva_intra))
                {
                        if (message != '')
						{
                                alert("\"" + tva_intra + "\" " + message);
                        }
                        champ.focus();
                        champ.select();
                        return false;
                }
                else
                {
                        return true;
                }
        }
        else
        {
               if (tva_intra.length < 4 || tva_intra.length > 14)
                {
                        if (message != '')
						{
                                alert("\"" + tva_intra + "\" " + message);
                        }
                        champ.focus();
                        champ.select();
                        return false;
                }
                else
                {
                        return true;
                }
        }
}

function test_tva_valide_ou_vide(champ, message)
{
	if (test_champ_vide(champ, ''))
	{
		return test_tva_valide(champ, message);
	} else {
		return true;
	}
}

function test_champ_vide(champ, message)
{
	if (champ.value == '') {
		if (message != '') {
			alert(message);
		}
		champ.focus();
		champ.select();
		return false;
	} else {
		return true;
	}
}

Conclusion :


Si vous voulez un test plus poussé, jetez un oeil sur le vform de Kakoo :
http://www.javascriptfr.com/code.aspx?ID=45893

A voir également

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.