|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
contrôle validité numéro IBAN |
Started by michel.meyer, Jun., 15 2014 10:39 AM - 17 replies |
| |
| | | |
|
| |
Posted on June, 15 2014 - 10:39 AM |
Bonjour,
Pc Soft avait donné "à l'époque" une fonction permettant de contrôler la validité d'un RIB. Existe t-il l'équivalent pour l'IBAN ? J'ai bien vu que dans la LST 94 il y a un exemple "WD SEPA" qui propose une procédure pour transformer un RIB en IBAN, mais je n'ai rien trouvé sur le contrôle dans la saisie d'un nouvel IBAN.
Merci d'avance pour votre aide Michel |
| |
| |
| | | |
|
| | |
| |
Posted on June, 16 2014 - 8:44 AM |
Bonjour,
Pc Soft avait donné "à l'époque" une fonction permettant de contrôler la validité d'un RIB. Existe t-il l'équivalent pour l'IBAN ? J'ai bien vu que dans la LST 94 il y a un exemple "WD SEPA" qui propose une procédure pour transformer un RIB en IBAN, mais je n'ai rien trouvé sur le contrôle dans la saisie d'un nouvel IBAN.
Merci d'avance pour votre aide Michel
Bonjour,
http://fr.wikipedia.org/wiki/ISO_13616
En surfant je suis tombé là-dessus. Je n'ai pas encore eu besoin de l'utiliser mais il semble y avoir tout ce qu'il faut.
Cordialement,
-- Pierre |
| |
| |
| | | |
|
| | |
| |
Posted on June, 16 2014 - 9:06 AM |
Bonjour,
Dans la LST95, il y a un exemple de contrôle sur l'IBAN (Q&R LST95)
Bien à vous |
| |
| |
| | | |
|
| | |
| |
Registered member 13 messages |
|
Posted on June, 16 2014 - 9:25 AM |
Procedure VérifieIBAN(LOCAL sNuméroIBAN est une chaîne)
sNuméroIBAN = ChaîneFormate(sNuméroIBAN, ccMajuscule+ccSansAccent+ccSansEspace+ccSansPonctuationNiEspace)
SI Taille(sNuméroIBAN) < 14 _OU_ Taille(sNuméroIBAN) > 34 ALORS RENVOYER Faux
sNuméroIBAN = sNuméroIBAN[[5 A]] + sNuméroIBAN[[A 4]]
POUR nCodeASCII = Asc("A") _A_ Asc("Z") sNuméroIBAN = Remplace(sNuméroIBAN, Caract(nCodeASCII), nCodeASCII-Asc("A")+10) FIN
RENVOYER (Modulo(Val(sNuméroIBAN), 97) = 1) |
| |
| |
| | | |
|
| | |
| |
Posted on June, 16 2014 - 12:03 PM |
michel a formulé la demande :
Bonjour,
Pc Soft avait donné "à l'époque" une fonction permettant de contrôler la validité d'un RIB. Existe t-il l'équivalent pour l'IBAN ? J'ai bien vu que dans la LST 94 il y a un exemple "WD SEPA" qui propose une procédure pour transformer un RIB en IBAN, mais je n'ai rien trouvé sur le contrôle dans la saisie d'un nouvel IBAN.
Merci d'avance pour votre aide Michel
seul les organismes bancaires ou autorisés peuvent convertir intégralement un RIB en IBAN + BIC, d'après c'est que j'ai pu trouver comme infos, à moins que le SWIFT (Society for Worldwide Interbank Financial Telecommunication) vous permette de la faire mais AMHA cela ne sera pas gratuit
la seule chose que vous pouvez faire c'est de calculer le code de contrôle se trouvant juste après le code pays le reste de l'IBAN étant composé du RIB, néanmoins il existe des liste de BIC (ou SWIFT) sur internet (http://www.theswiftcodes.com/france/)
vous avez ici (http://migrationsepa.bnpparibas.fr/webapp/calculette.do) un convertisseur
-- Cordialement JeAn-PhI |
| |
| |
| | | |
|
| | |
| |
Posted on June, 16 2014 - 5:10 PM |
Bonjour et merci à tous pour vos réponses !!! (un petit + pour Aline qui m'a permis de récupérer rapidement le code )
Je n'avais pas vu que ce sujet était traité dans les Q&R de la LST95. Ce qui est dommage, c'est que même en faisant des recherches sur "IBAN" dans l'éditeur windev, on ne tombe pas sur ces infos...
Encore merci pour m'avoir permis d'avancer !!!
Bonne fin de journée et bons dev ! Michel |
| |
| |
| | | |
|
| | |
| |
Posted on June, 16 2014 - 11:42 PM |
Bonjour Michel
Site de pcsoft, Menu support technique choix ressources pratiques: rechercher IBAN
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
NOUVEAU: WXShowroom.com est disponible : Montrez vos projets ! Plus d'information sur http://fabriceharari.com
On 6/16/2014 9:10 AM, Michel wrote:
Bonjour et merci à tous pour vos réponses !!! (un petit + pour Aline qui m'a permis de récupérer rapidement le code ) Je n'avais pas vu que ce sujet était traité dans les Q&R de la LST95. Ce qui est dommage, c'est que même en faisant des recherches sur "IBAN" dans l'éditeur windev, on ne tombe pas sur ces infos... Encore merci pour m'avoir permis d'avancer !!! Bonne fin de journée et bons dev ! Michel |
| |
| |
| | | |
|
| | |
| |
Posted on June, 17 2014 - 9:32 AM |
Bonjour Fabrice,
Effectivement, je n'avais pas cherché de ce coté. Bon à savoir. Merci pour ce petit rappel !!!
Bonne journée Michel |
| |
| |
| | | |
|
| | |
| |
Posted on June, 28 2022 - 4:48 PM |
Très bon algorithme mais qui ne marche pas toujours (: exemple : RIB FR881744800001POMSRGJMDZJ04
Xavier |
| |
| |
| | | |
|
| | |
| |
Registered member 2,141 messages |
|
Posted on June, 28 2022 - 6:59 PM |
Bonjour,
Il me semble qu'il y a un champ métier IBAN en WD27.
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Registered member 8 messages |
|
Posted on June, 07 2023 - 4:25 PM |
Même problème que Xavier avec un autre numéro qui est bien considéré comme valide sur des sites permettant de le vérifier. Est ce que quelqu'un serait tombé sur un code qui fonctionnerais ?
Pas vu de champ métier en WD27 pour l'IBAN
Par contre, il y a une fonction IBANValide() ... mais que à partir de la version 28 (forcement on est en 27) https://doc.pcsoft.fr/?1410089019 |
| |
| |
| | | |
|
| | |
| |
Registered member 2,677 messages |
|
Posted on June, 07 2023 - 4:36 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 8 messages |
|
Posted on June, 08 2023 - 9:06 AM |
Bonjour, Merci pour le lien, c'est bien cette méthode qui est utilisée et donc je suis aussi tombé dessus hier, il faut découper le calcul du modulo
En effet, la conversion de l'IBAN en chiffre dépasse la capacité de stockage des variables
j'ai repris le code en ajoutant des traces et l'IBAN cité plus haut FR881744800001POMSRGJMDZJ04
Voici ce que l'on obtient
Procedure VérifieIBAN(LOCAL sNuméroIBAN est une chaîne)
sNuméroIBAN = ChaîneFormate(sNuméroIBAN, ccMajuscule+ccSansAccent+ccSansEspace+ccSansPonctuationNiEspace) Trace("IBAN source = "+sNuméroIBAN)
SI Taille(sNuméroIBAN) < 14 _OU_ Taille(sNuméroIBAN) > 34 ALORS RENVOYER Faux
sNuméroIBAN = sNuméroIBAN[[5 À]] + sNuméroIBAN[[À 4]] Trace("IBAN avec déplacement caract ="+sNuméroIBAN)
POUR nCodeASCII = Asc("A") _À_ Asc("Z") sNuméroIBAN = Remplace(sNuméroIBAN, Caract(nCodeASCII), nCodeASCII-Asc("A")+10) FIN Trace("IBAN après conversion lettre = "+ sNuméroIBAN) Trace("VAL de l'IBAN = "+Val(sNuméroIBAN))
nNItemp est un entier sur 8 octets = sNuméroIBAN Trace("entier sur 8 = "+nNItemp)
moNItemp est un monétaire = sNuméroIBAN Trace("monétaire = "+moNItemp)
nItemp est un numérique(*) = sNuméroIBAN Trace("numérique = "+nItemp)
rItemp est un réel = sNuméroIBAN Trace("réel = "+rItemp)
soit test = ChaîneVersNumérique(sNuméroIBAN) Trace("dec auto = "+test)
RENVOYER (Modulo(Val(sNuméroIBAN), 97) = 1)
Et voici les traces
|
| |
| |
| | | |
|
| | |
| |
Registered member 8 messages |
|
Posted on June, 08 2023 - 10:08 AM |
Si ca peut aider quelqu'un donc
Procedure VérifieIBAN1(LOCAL sNuméroIBAN est une chaîne)
sNuméroIBAN = ChaîneFormate(sNuméroIBAN, ccMajuscule+ccSansAccent+ccSansEspace+ccSansPonctuationNiEspace) Trace("IBAN source = "+sNuméroIBAN)
SI Taille(sNuméroIBAN) < 14 _OU_ Taille(sNuméroIBAN) > 34 ALORS RENVOYER Faux
sNuméroIBAN = sNuméroIBAN[[5 À]] + sNuméroIBAN[[À 4]] Trace("IBAN avec déplacement caract = "+sNuméroIBAN)
POUR nCodeASCII = Asc("A") _À_ Asc("Z") sNuméroIBAN = Remplace(sNuméroIBAN, Caract(nCodeASCII), nCodeASCII-Asc("A")+10) FIN
sDécoupe est une chaîne sModulo est une chaîne
Trace("IBAN en chiffre : "+sNuméroIBAN) sDécoupe = Gauche(sNuméroIBAN,10) Trace("Découpe : "+sDécoupe) sNuméroIBAN = Milieu(sNuméroIBAN,11) Trace("Reste : "+sNuméroIBAN) TANTQUE (sNuméroIBAN <> "") sModulo = Modulo (Val(sDécoupe), 97) Trace("Modulo : "+sModulo) sDécoupe = sModulo + Gauche(sNuméroIBAN,8) Trace("Découpe : "+sDécoupe) sNuméroIBAN = Milieu(sNuméroIBAN,9) Trace("Reste : "+sNuméroIBAN) FIN Trace("Découpe : "+sDécoupe)
sModulo = Modulo (Val(sDécoupe), 97) Trace("Modulo : " +sModulo)
RENVOYER (sModulo = "1") Message modified, June, 08 2023 - 10:20 AM |
| |
| |
| | | |
|
| | |
| |
Posted on June, 14 2023 - 1:34 PM |
Bonjour, Il existe la fonction IBANValide() qui permet la validité d'un IBAN. NN12 |
| |
| |
| | | |
|
| | |
| |
Posted on January, 16 2025 - 8:50 AM |
a écrit :
Bonjour, Il existe la fonction IBANValide() qui permet la validité d'un IBAN. NN12
suis encore en version 28. IBANvalide KO sur cet IBAN neerlandais : NL09INGB0005468912 alors que l'iban verifie bien l'algo.... |
| |
| |
| | | |
|
| | |
| |
Posted on January, 18 2025 - 12:30 PM |
cdm98 a écrit :
a écrit : Bonjour, Il existe la fonction IBANValide() qui permet la validité d'un IBAN. NN12
suis encore en version 28. IBANvalide KO sur cet IBAN neerlandais : NL09INGB0005468912 alors que l'iban verifie bien l'algo....
Procedure verifie_iban(LOCAL sNuméroIBAN est une chaîne)
sNuméroIBAN = ChaîneFormate(sNuméroIBAN, ccMajuscule+ccSansAccent+ccSansEspace+ccSansPonctuationNiEspace)
SI Taille(sNuméroIBAN) < 14 _OU_ Taille(sNuméroIBAN) > 34 ALORS RENVOYER Faux
sPays est une chaîne = Gauche(sNuméroIBAN,2) SELON sPays CAS "DE" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "AT" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "BE" SI PAS Taille(sNuméroIBAN) = 16 ALORS RENVOYER Faux CAS "BG" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "CY" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "DK" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "ES" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "EE" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "FI" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "FR" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "GR" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "HU" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "IE" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "IS" SI PAS Taille(sNuméroIBAN) = 26 ALORS RENVOYER Faux CAS "IT" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "LV" SI PAS Taille(sNuméroIBAN) = 21 ALORS RENVOYER Faux CAS "LI" SI PAS Taille(sNuméroIBAN) = 21 ALORS RENVOYER Faux CAS "LT" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "LU" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "MT" SI PAS Taille(sNuméroIBAN) = 31 ALORS RENVOYER Faux CAS "NO" SI PAS Taille(sNuméroIBAN) = 15 ALORS RENVOYER Faux CAS "NL" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "PL" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "PT" SI PAS Taille(sNuméroIBAN) = 25 ALORS RENVOYER Faux CAS "CZ" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "RO" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "GB" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "SK" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "SI" SI PAS Taille(sNuméroIBAN) = 19 ALORS RENVOYER Faux CAS "SE" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux AUTRE CAS FIN
sNuméroIBAN = sNuméroIBAN[[5 À]] + sNuméroIBAN[[À 4]]
POUR nCodeASCII = Asc("A") _À_ Asc("Z") sNuméroIBAN = Remplace(sNuméroIBAN, Caract(nCodeASCII), nCodeASCII-Asc("A")+10) FIN
RENVOYER (Modulo(Val(sNuméroIBAN), 97) = 1) |
| |
| |
| | | |
|
| | |
| |
Posted on January, 20 2025 - 3:36 PM |
Jean-Marc a écrit :
cdm98 a écrit : a écrit : Bonjour, Il existe la fonction IBANValide() qui permet la validité d'un IBAN. NN12
suis encore en version 28. IBANvalide KO sur cet IBAN neerlandais : NL09INGB0005468912 alors que l'iban verifie bien l'algo.... Procedure verifie_iban(LOCAL sNuméroIBAN est une chaîne)
sNuméroIBAN = ChaîneFormate(sNuméroIBAN, ccMajuscule+ccSansAccent+ccSansEspace+ccSansPonctuationNiEspace)
SI Taille(sNuméroIBAN) < 14 _OU_ Taille(sNuméroIBAN) > 34 ALORS RENVOYER Faux
sPays est une chaîne = Gauche(sNuméroIBAN,2) SELON sPays CAS "DE" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "AT" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "BE" SI PAS Taille(sNuméroIBAN) = 16 ALORS RENVOYER Faux CAS "BG" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "CY" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "DK" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "ES" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "EE" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "FI" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "FR" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "GR" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "HU" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "IE" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "IS" SI PAS Taille(sNuméroIBAN) = 26 ALORS RENVOYER Faux CAS "IT" SI PAS Taille(sNuméroIBAN) = 27 ALORS RENVOYER Faux CAS "LV" SI PAS Taille(sNuméroIBAN) = 21 ALORS RENVOYER Faux CAS "LI" SI PAS Taille(sNuméroIBAN) = 21 ALORS RENVOYER Faux CAS "LT" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "LU" SI PAS Taille(sNuméroIBAN) = 20 ALORS RENVOYER Faux CAS "MT" SI PAS Taille(sNuméroIBAN) = 31 ALORS RENVOYER Faux CAS "NO" SI PAS Taille(sNuméroIBAN) = 15 ALORS RENVOYER Faux CAS "NL" SI PAS Taille(sNuméroIBAN) = 18 ALORS RENVOYER Faux CAS "PL" SI PAS Taille(sNuméroIBAN) = 28 ALORS RENVOYER Faux CAS "PT" SI PAS Taille(sNuméroIBAN) = 25 ALORS RENVOYER Faux CAS "CZ" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "RO" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "GB" SI PAS Taille(sNuméroIBAN) = 22 ALORS RENVOYER Faux CAS "SK" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux CAS "SI" SI PAS Taille(sNuméroIBAN) = 19 ALORS RENVOYER Faux CAS "SE" SI PAS Taille(sNuméroIBAN) = 24 ALORS RENVOYER Faux AUTRE CAS FIN
sNuméroIBAN = sNuméroIBAN[[5 À]] + sNuméroIBAN[[À 4]]
POUR nCodeASCII = Asc("A") _À_ Asc("Z") sNuméroIBAN = Remplace(sNuméroIBAN, Caract(nCodeASCII), nCodeASCII-Asc("A")+10) FIN
RENVOYER (Modulo(Val(sNuméroIBAN), 97) = 1)
Bonjour, en tout cas, en windev2025, en windev2024 la fonction IBANvalide dit que le code IBAN est correct... mais pas en version 28, effectivement |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|