Accueil > > > TESTER NUMÉRO TVA INTRA-COMMUNAUTAIRE
TESTER NUMÉRO TVA INTRA-COMMUNAUTAIRE
Information sur la source
Description
Voici une fonction permettant de tester la structure d'un numéro de TVA intra communautaire. Nous ne pouvons pas aller beaucoup plus loin dans va vérification étant donné qu'il n’existe aucun algorithme accessible aux entreprises permettant de calculer automatiquement les numéros de TVA intracommunautaire et pouvant être intégré dans des systèmes informatiques de gestion. Les structures testées suivent les conventions du 1er juin 2005 pour les 25 Etats membres
Source
- ' =====================================================================================================
- ' isIntraComValide : Teste que la structure du numéro de TVA intra communautaire soit valide.
- '
- ' num : numéro de TVA intra Com.
- ' [siren] : cas pour la France afin d'afiner la vérification
- '
- ' Return : True/False
- '
- ' =====================================================================================================
- '
- ' Il n’existe aucun algorithme accessible aux entreprises permettant
- ' de calculer automatiquement les numéros de TVA intracommunautaire et
- ' pouvant être intégré dans des systèmes informatiques de gestion.
- '
- ' Mise à jour : 1er juin 2005 pour les 25 Etats membres
-
-
- Private Function isIntraComValide(ByVal num As String, Optional ByVal siren As String) As Boolean
-
- 'Nettoyer la chaine
- num = UCase(Replace(num, " ", ""))
-
- If Len(num) < 3 Then ' Il n'existe pas de code de moins de 3 char
- isIntraComValide = False
- Exit Function
- End If
-
- ' Découpage des données
- Dim cle As String: cle = Mid(num, 1, 2)
- Dim fin As String: fin = Mid(num, 3)
- Dim finLength As Integer: finLength = Len(fin)
-
-
- ' Vérifier à partir de la clé Pays
- Select Case cle
- Case "IE": isIntraComValide = (finLength = 8) ' Irlande
-
- Case "DK": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Danemark
- Case "FI": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Finlande
- Case "LU": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Luxembourg
- Case "MT": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Malte
- Case "SI": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Slovénie
- Case "HU": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Hongrie
-
- Case "CZ": isIntraComValide = (finLength >= 8 And finLength <= 10) And IsNumeric(fin) 'République tchèque
-
- Case "ES": isIntraComValide = (finLength = 9) ' Espagne
- Case "CY": isIntraComValide = (finLength = 9) ' Chypre : CY + 8 caractères numériques + 1 caractères alphabétiques
-
- Case "DE": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Allemagne
- Case "EL": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Grèce
- Case "GR": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Grèce
- Case "PT": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Portugal
- Case "EE": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Estonie
-
- Case "SK": isIntraComValide = ((finLength = 9) Or (finLength = 10)) And IsNumeric(fin) ' Slovaquie
- Case "LT": isIntraComValide = ((finLength = 9) Or (finLength = 12)) And IsNumeric(fin) ' Lituanie
-
- Case "GB": isIntraComValide = (((finLength = 9) Or (finLength = 4 And Mid(fin, 1, 1) = "9")) _
- And IsNumeric(fin)) Or (finLength = 5 And IsNumeric(Mid(fin, 3))) 'Grande-Bretagne
-
- Case "AT": isIntraComValide = (finLength = 9 And (Mid(fin, 1, 1) = "U") _
- And IsNumeric(Mid(fin, 2))) 'Autriche
-
- Case "PL": isIntraComValide = (finLength = 10) And IsNumeric(fin) ' Pologne
- Case "BE": isIntraComValide = (finLength = 10) And IsNumeric(fin) _
- And (Mid(fin, 1, 1) = "0") ' Belgique
-
- Case "LV": isIntraComValide = (finLength = 11) ' Lettonie
- Case "IT": isIntraComValide = (finLength = 11) And IsNumeric(fin) ' Italie
- Case "FR": isIntraComValide = (finLength = 11) And IsNumeric(fin) _
- And IIf(Len(siren), Mid(fin, 3) = siren, True) ' France
-
- Case "NL": isIntraComValide = (finLength = 12) ' Pays-Bas
- Case "SE": isIntraComValide = (finLength = 12) And IsNumeric(fin) ' Suède
- End Select
- End Function
' =====================================================================================================
' isIntraComValide : Teste que la structure du numéro de TVA intra communautaire soit valide.
'
' num : numéro de TVA intra Com.
' [siren] : cas pour la France afin d'afiner la vérification
'
' Return : True/False
'
' =====================================================================================================
'
' Il n’existe aucun algorithme accessible aux entreprises permettant
' de calculer automatiquement les numéros de TVA intracommunautaire et
' pouvant être intégré dans des systèmes informatiques de gestion.
'
' Mise à jour : 1er juin 2005 pour les 25 Etats membres
Private Function isIntraComValide(ByVal num As String, Optional ByVal siren As String) As Boolean
'Nettoyer la chaine
num = UCase(Replace(num, " ", ""))
If Len(num) < 3 Then ' Il n'existe pas de code de moins de 3 char
isIntraComValide = False
Exit Function
End If
' Découpage des données
Dim cle As String: cle = Mid(num, 1, 2)
Dim fin As String: fin = Mid(num, 3)
Dim finLength As Integer: finLength = Len(fin)
' Vérifier à partir de la clé Pays
Select Case cle
Case "IE": isIntraComValide = (finLength = 8) ' Irlande
Case "DK": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Danemark
Case "FI": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Finlande
Case "LU": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Luxembourg
Case "MT": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Malte
Case "SI": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Slovénie
Case "HU": isIntraComValide = (finLength = 8) And IsNumeric(fin) ' Hongrie
Case "CZ": isIntraComValide = (finLength >= 8 And finLength <= 10) And IsNumeric(fin) 'République tchèque
Case "ES": isIntraComValide = (finLength = 9) ' Espagne
Case "CY": isIntraComValide = (finLength = 9) ' Chypre : CY + 8 caractères numériques + 1 caractères alphabétiques
Case "DE": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Allemagne
Case "EL": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Grèce
Case "GR": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Grèce
Case "PT": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Portugal
Case "EE": isIntraComValide = (finLength = 9) And IsNumeric(fin) ' Estonie
Case "SK": isIntraComValide = ((finLength = 9) Or (finLength = 10)) And IsNumeric(fin) ' Slovaquie
Case "LT": isIntraComValide = ((finLength = 9) Or (finLength = 12)) And IsNumeric(fin) ' Lituanie
Case "GB": isIntraComValide = (((finLength = 9) Or (finLength = 4 And Mid(fin, 1, 1) = "9")) _
And IsNumeric(fin)) Or (finLength = 5 And IsNumeric(Mid(fin, 3))) 'Grande-Bretagne
Case "AT": isIntraComValide = (finLength = 9 And (Mid(fin, 1, 1) = "U") _
And IsNumeric(Mid(fin, 2))) 'Autriche
Case "PL": isIntraComValide = (finLength = 10) And IsNumeric(fin) ' Pologne
Case "BE": isIntraComValide = (finLength = 10) And IsNumeric(fin) _
And (Mid(fin, 1, 1) = "0") ' Belgique
Case "LV": isIntraComValide = (finLength = 11) ' Lettonie
Case "IT": isIntraComValide = (finLength = 11) And IsNumeric(fin) ' Italie
Case "FR": isIntraComValide = (finLength = 11) And IsNumeric(fin) _
And IIf(Len(siren), Mid(fin, 3) = siren, True) ' France
Case "NL": isIntraComValide = (finLength = 12) ' Pays-Bas
Case "SE": isIntraComValide = (finLength = 12) And IsNumeric(fin) ' Suède
End Select
End Function
Conclusion
Pour la France, il est préférable de passer le siren en parametre afin de completer la vérification. Pour tout autre pays, il suffit de passer le numéro à tester à la fonction.
Pour consulter une base de données officielle afin de vérifier la concordance entre le nom d’une entreprise et son numéro de TVA intracommunautaire : http://www.europa.eu.int/comm/taxation_customs/vie s/fr/vieshome.htm
++
Zlub
Historique
- 03 février 2006 02:55:17 :
- fautes de frappes ;)
- 03 février 2006 15:58:51 :
- Affiné pour la Grande-Bretagne
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Case TVA?? [ par gatsso ]
Bonjour a tous,je d'acheter le bouquin EXCEL2002 et je ne m'en sort pas c'est peut etre parce que j'ai EXCEL 97? bref je fait mon facturier et j'aimer
Maskedbox1 [ par petiflamand ]
Salut comment faire pour effacer un maskedboxen effet je rentre dedans un numero de tvaau format 123/123/123puis si il y a pas de tva pour un clientje
Clé TVA Intracommunautaire [ par MadJax ]
Bonjour à tous et bonne année, Ma question est simple. Je cherche un algo permettant de générer un N° TVA Intracommunautaire
comment eviter plein de if ??? dans une boucle [ par petiflamand ]
bonjour , je doit faire un calcul entre 300 a 400 ligne chauque jourdans c'est ligne j'ai des champ avec des numero entre 1 et 89je vourais savoir si
Probleme avec datagridviewcomboboxcell vb2005 [ par chris81 ]
bonjour,j'ai ub datagridview avec une comboboxcolumn que je remplit ainsi dans le chargement de ma page.[CODE] Dim MyTVA As New tvaDim Myds As
Calculer la TVA à 19.6% ou plus Simplement un pourcentage ? [ par Dri60 ]
Bonjour, je voulais savoir si il existe une Fonction pour Calculer la TVA à 19.6% ou plus Simplement un pourcentage ?Merci d'avance. Dri60
Requette imbriqué VB.net [ par perlitta3000 ]
BonjourSVP j'ai besoin de votre aide. Je extraire des donnees de plusieurs tables c-a-d je veux creer une sqlcommand qui contient une requette sql imb
Application de calcul de TVA au maroc avec VB2005 [ par etarik87 ]
bsr mes freres les developpeurs je suis un etudiant dans une ecole d'informatique appliquée a la gestion on a fait de la programmation c'est juste une
Lecture avec agrégat group by pour recordset [ par petiflamand ]
bonjour voici ma requete [code=vb]Set rs = db.OpenRecordset("select num_dep,total_hors_tva,sum(vat.total_tva_comprise),montant_tva As titi FROM vat W
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : PROJETRE : PROJET par acive
Cliquez pour lire la suite par acive
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|