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
Je n'y connais rien et on me demande de faire des trucs pas possible... [ par kimenbo ]
Bonjour à tous et merci de m'apporter votre aide et soutien...On m'a demandé de développer une base access pour gérer des chantier
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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|