| |
Posté le 15 juin 2014 - 10:39 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 16 juin 2014 - 08:44 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 16 juin 2014 - 09:06 |
Bonjour,
Dans la LST95, il y a un exemple de contrôle sur l'IBAN (Q&R LST95)
Bien à vous |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages |
|
Posté le 16 juin 2014 - 09:25 |
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) |
| |
| |
| | | |
|
| | |
| |
Posté le 16 juin 2014 - 12:03 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 16 juin 2014 - 17:10 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 16 juin 2014 - 23:42 |
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 |
| |
| |
| | | |
|
| | |
| |
Posté le 17 juin 2014 - 09:32 |
Bonjour Fabrice,
Effectivement, je n'avais pas cherché de ce coté. Bon à savoir. Merci pour ce petit rappel !!!
Bonne journée Michel |
| |
| |
| | | |
|
| | |
| |
Posté le 28 juin 2022 - 16:48 |
Très bon algorithme mais qui ne marche pas toujours (: exemple : RIB FR881744800001POMSRGJMDZJ04
Xavier |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 141 messages |
|
Posté le 28 juin 2022 - 18:59 |
Bonjour,
Il me semble qu'il y a un champ métier IBAN en WD27.
-- Bon dev, Jean-Pierre |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 8 messages |
|
Posté le 07 juin 2023 - 16:25 |
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 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 677 messages |
|
Posté le 07 juin 2023 - 16:36 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 8 messages |
|
Posté le 08 juin 2023 - 09:06 |
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
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 8 messages |
|
Posté le 08 juin 2023 - 10:08 |
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 modifié, 08 juin 2023 - 10:20 |
| |
| |
| | | |
|
| | |
| |
Posté le 14 juin 2023 - 13:34 |
Bonjour, Il existe la fonction IBANValide() qui permet la validité d'un IBAN. NN12 |
| |
| |
| | | |
|
| | |
| |
Posté le 16 janvier 2025 - 08:50 |
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.... |
| |
| |
| | | |
|
| | |
| |
Posté le 18 janvier 2025 - 12:30 |
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) |
| |
| |
| | | |
|
| | |
| |
Posté le 20 janvier 2025 - 15:36 |
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 |
| |
| |
| | | |
|
| | |