IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Vérification du numéro de TVA


Sujet :

JavaScript

  1. #1
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut Vérification du numéro de TVA
    Bonjour, je voudrais faire en sorte que lorsqu'on s'enregistre sur mon site, l'utilisateur tape son n° de TVA dans un champ ad-hoc du formulaire (le site est en ASP classic) . Mais je voudrais m'assurer que le n° est valide - pas s'il existe. En Belgique le n° de TVA commence par 0 suivi de 9 chiffres. La formule pour vérifier est simple. Exemple: 0472968436. On ignore le premier chiffre (0) et les deux derniers chiffres. On divise par 97. On conserve la partie entière qu'on multiplie à nouveau par 97. Ensuite on fait la différence entre le résultat de la première opération et de la deuxième opération. Enfin, on prend le résultat qu'on soustrait à 97.
    4729684 / 97 = 48759,628
    48759 * 97 = 4729623
    4729684 - 4729623 = 61
    97 - 61 = 36
    Cqfd puisque = aux deux derniers chiffre du n° de TVA.
    Je suis certain que ce script existe déjà quelque part, mais je n'ai pas trouvé. Si quelqu'un peut m'aider...

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    sympa le calcul

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div>
        <input type="text" id="tva" maxlength="10" />
        <button id="go">tester</button>
    </div>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    document.getElementById("go").addEventListener("click",function(){
        const ch=document.getElementById("tva").value,
        ch2=parseInt(ch.slice(1,8));
        alert(/^0\d{9}$/.test(ch) && 97-(ch2-(parseInt(ch2/97)*97))==parseInt(ch.slice(8)));
    })

  3. #3
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Bonjour Javatwister, on dit pas être loin.
    Ci-dessous mon code. Mais il doit manquer qqc.
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <script>
    document.getElementById("go").addEventListener("click",function(){
        const ch=document.getElementById("tva").value,
        ch2=parseInt(ch.slice(1,8));
        alert(/^0\d{9}$/.test(ch) && 97-(ch2-(parseInt(ch2/97)*97))==parseInt(ch.slice(8)));
    })
    </script>			
     
    	<form method="post" role="form" class="tva" name="Go"  action="TVA_OK.html>
    			<div class="row">
    				<div class="col-lg-10">			
    				<div class="col-25">
    				<label for="LastName">TVA</label>
    				</div>
     
    				<div class="col-75">
    				<input type="text" id="tva" name="tva" value=""maxlength="10" click  >
    				<button type="submit"id="go">tester</button>
    				</div>
    				</div>
    			</div>		
    	</form>

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Enlève le "click" insolite dans le champ "tva";
    Place le script sous le formulaire;

  5. #5
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Magnifique ! Comment puis-je customiser le message true ou false ?

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Remplace la ligne
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(/^0\d{9}$/.test(ch) && 97-(ch2-(parseInt(ch2/97)*97))==parseInt(ch.slice(8)));

    par

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(/^0\d{9}$/.test(ch) && 97-(ch2-(parseInt(ch2/97)*97))==parseInt(ch.slice(8))){
        alert("ok")
    }
    else alert("ko")

  7. #7
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Super. Beau travail. Merci pour ton aide.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Si tu effectues le test à la soumission du formulaire, tu vas avoir de mauvaises surprises en gardant le code en l'état;

    Schématiquement, ton formulaire ressemble à ça:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form id="f">
        <div>
            <input type="text" id="tva" maxlength="10" />
            <input type="submit" value="tester" />
        </div>
    </form>

    Dans le script, ne renvoie un message que si la saisie est incorrecte et bloque l'envoi:

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    document.getElementById("f").addEventListener("submit",function(e){
    	const ch=e.target["tva"].value,// le champ tva
    	ch2=parseInt(ch.slice(1,8));// le champ tva sans le début et la fin
     
    	if(!/^0\d{9}$/.test(ch) || 97-(ch2-(parseInt(ch2/97)*97))!=parseInt(ch.slice(8))){// le test
    		alert("numéro de TVA incorrect");
    		e.preventDefault();// empêche la soumission du formulaire
    	}
    })

  9. #9
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut MOSS - VAT
    Bonsoir

    Pour info, il existe un service web de la Commission Européenne qui permet de valider si 1. le numéro est valide mais surtout 2. s'il est actif et si oui, qui le possède.

    Si tu connais un peu VBA, voici un code que j'ai écris il y a quelques mois pour illustrer cela : https://github.com/cavo789/vba_excel_call_webservice

    L'appel au service web est évidemment agnostique du langage utilisé et le manifest (la manière d'appeler le service) est affiché ici : https://github.com/cavo789/vba_excel...s/checkVat.xml

    Bonne soirée.

  10. #10
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Bonjour CAVO789, oui je connais ce service. Ceci dit, les serveurs sont souvent surchargés, donc très souvent, il n'y a pas de réponse. Je n'ai pas besoin d'aller jusqu'à ce type de vérification. Mon but étant simplement de gentiment dissuader les touristes de s'enregistrer. Merci à toi.

  11. #11
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Bonjour, j'ai encore un petit souci avec le script de validation de la TVA.
    J'ai deux versions:
    1- http://www.mycabinet.be/Tva_Formulaire_Sans_Message.asp il fonctionne sauf que le résultat soit true ou false, il est validé et on est redirigé
    2 - http://www.mycabinet.be/Tva_Formulaire_Avec_Message.asp, ici le problème est double: pareil au premier (sasn message) mais aussi les messages ne s'affichent pas.
    Est-ce que Toufik83 ou quelqu'un d'autre peut m'aider ?
    Merci d'avance.

    Sans message:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <form method="post" name="Go"  class="tva" role="form" action="Tva_Ok.asp">
    			<div class="row">
    				<div class="col-lg-10">			
    				<div class="col-25">
    				<label for="LastName">TVA</label>
    				</div>
     
    				<div class="col-75">
    				<input type="text" id="tva" name="tva" value=""maxlength="10" click  >
    				<button type="submit"id="go">tester</button>
    				</div>
    				</div>
    			</div>		
    	</form>
    <script>
    document.getElementById("go").addEventListener("click",function(){
        const ch=document.getElementById("tva").value,
        ch2=parseInt(ch.slice(1,8));
        alert(/^0\d{9}$/.test(ch) && 97-(ch2-(parseInt(ch2/97)*97))==parseInt(ch.slice(8)));
    })
    </script>

    Avec message:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    	<form method="post" name="Go"  class="tva" role="form" action="Tva_Ok.asp">
    			<div class="row">
    				<div class="col-lg-10">			
    				<div class="col-25">
    				<label for="LastName">TVA</label>
    				</div>
     
    				<div class="col-75">
    				<input type="text" id="tva" name="tva" value=""maxlength="10" click  >
    				<button type="submit"id="go">tester</button>
    				</div>
    				</div>
    			</div>		
    	</form>
    	<script>
            ocument.getElementById("f").addEventListener("submit",function(e){
                    const ch=e.target["tva"].value,// le champ tva
                    ch2=parseInt(ch.slice(1,8));// le champ tva sans le début et la fin
             
                    if(!/^0\d{9}$/.test(ch) || 97-(ch2-(parseInt(ch2/97)*97))!=parseInt(ch.slice(8))){// le test
                            alert("numéro de TVA incorrect");
                            e.preventDefault();// empêche la soumission du formulaire
                    }
            })
            </script>

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Si tu compares mon code et le tien, tu devrais trouver ce qui diffère (pas très long à relire);

  13. #13
    Mvu
    Mvu est déconnecté
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 248
    Par défaut
    Effectivement ! C'est tout beau maintenant. A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Vérification de numéro de sécurité sociale
    Par Crunkman dans le forum Langage
    Réponses: 19
    Dernier message: 26/02/2016, 15h11
  2. vérification du numéro
    Par ramzuus95 dans le forum C
    Réponses: 1
    Dernier message: 16/11/2014, 13h01
  3. Réponses: 6
    Dernier message: 09/03/2014, 15h52
  4. Regexp de vérification des numéro saisis
    Par moukit233 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/01/2010, 10h37
  5. REQ : Algo pour vérification saisie du "Numero TVA"
    Par Eric.H dans le forum Langage
    Réponses: 4
    Dernier message: 28/01/2009, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo