Aller au contenu

Vincent

  • billets
    15
  • commentaires
    4
  • visualisations
    61 736

International Bank Account Number

Vincent

2 627 vues

IBAN est l'abréviation pour Internatinal Bank Account Number. Il s'agit d'un numéro de compte répondant au normes internationales ISA, désignant sans aucune ambiguïté une relation de compte dans les opérations de paiement transfrontalière entre pays européens.

l'IBAN doit être considéré comme une "enveloppe" internationalement reconnue à laquelle les numéros de compte existantes peuvent être intégrés.

l'IBAN a une longueur maximale de 34 caractères alphanumériques :

  • les deux premières lettres identifient le pays de tenue du compte.
  • les deux chiffres suivants contiennent le chiffre de contrôle qui permet de vérifier l'exactitude formelle du numéro IBAN.
  • La dernière partie comporte des informations locales, telles que lidentification de létablissement ou le numéro de compte.

Afin daméliorer la lisibilité en cas de présentation sur

papier, lIBAN est divisé en groupes de quatre.

Exemple dun IBAN suisse représenté sur papier:

CH35 0023 0230 5042 2318 T

CdPays - Pays - Long. - Exemple d'IBAN

DE - Allemagne - 22 - DE89 3704 0044 0532 0130 00

AD - Andorre - 24 - AD12 0001 2030 2003 5910 0100

AT - Autriche - 20 - AT97 1904 3002 3457 3201

BE - Belgique - 16 - BE68 5390 0754 7034

CY - Chypre - 28 - CY17 0020 0128 0000 0012 0052 7600

HR - Croatie - 21 - HR12 1001 0051 8630 0016 0

DK - Danemark - 18 - DK50 0040 0440 1162 43

ES - Espagne - 24 - ES91 2100 0418 4502 0005 1332

EE - Estonie - 20 - EE38 2200 2210 2014 6585

FI - Finlande - 18 - FI21 1234 5600 0007 85

FR - France - 27 - FR14 2004 1010 0505 0001 3M02 606

GI - Gibraltar - 23 - GI75 NEBK 0000 0000 7099 453

GR - Grèce - 27 - GR16 0110 1250 0000 0001 2300 695

GL - Groenland - 18 - GL56 0444 9876 5432 10

HU - Hongrie - 28 - HU42 1177 3016 1111 1018 0000 0000

FO - Îles Féroé - 18 - FO97 5432 0388 8999 44

IE - Irlande - 22 - IE29 AIBK 9311 5212 3456 78

IS - Islande - 26 - IS14 0159 2600 7654 5510 7303 39

IT - Italie - 27 - IT60 X054 2811 1010 0000 0123 456

LV - Lettonie - 21 - LV80 BANK 0000 4351 9500 1

LI - Liechtenstein - 21 LI21 0881 0000 2324 013A A

LT - Lituanie - 20 -LT12 1000 0111 0100 1000

LU - Luxembourg - 20 - LU28 0019 4006 4475 0000

MK - Macédoine - 19 - MK07 3000 0000 0042 425

MT - Malte - 31 - MT84 MALT 0110 0001 2345 MTLC AST0 01S

MC - Monaco - 27 - MC93 2005 2222 1001 1223 3M44 555

NO - Norvège - 15 - NO93 8601 1117 947

NL - Pays-Bas - 18 - NL91 ABNA 0417 1643 00

PL - Pologne - 28 - PL27 1140 2004 0000 3002 0135 5387

PT - Portugal - 25 - PT50 0002 0123 1234 5678 9015 4

CZ - République Tchèque - 24 - CZ65 0800 0000 1920 0014 5399

RO - Roumanie - 24 - RO49 AAAA 1B31 0075 9384 0000

GB - Royaume-Uni - 22 - GB29 NWBK 6016 1331 9268 19

SM - San Marino - 27 - SM62 Y054 3219 8760 0444 5333 222

CS - Serbie et Monténégro - 22 - CS73 2600 0560 1001 6113 79

SK - Slovaquie - 24 - SK31 1200 0000 1987 4263 7541

SI - Slovénie - 19 - SI56 1910 0000 0123 438

SE - Suède - 24 - SE35 5000 0000 0549 1000 0003

CH - Suisse - 21 - CH93 0076 2011 6238 5295 7

TN - Tunisie - 24 - TN59 1420 7207 1007 0712 9648

TR - Turquie - 26 - TR33 0006 1005 1978 6457 8413 26

Voilà pour le coté théorique, en pratique, voici l'algorithme du calcul de la clé de controle :

  • Créer un code IBAN articiel, composé du code du pays (ISO 3166), suivi de "00" et du compte bancaire.
  • Déplacer les 4 premiers caractères de l'IBAN vers la droite du numéro.
  • Convertir les lettres en chiffres, conformément à la table de conversion (A=10, Z=35)
  • Appliquer le modulo 97 et retrancher le reste de 98.
  • Si le résultat comporte 1 seul chiffre, inserer un 0 devant.
  • Insérer le résultat ainsi obtenu à la position 3 de l'IBAN articiel créé auparavant (ce qui reviens a remplacer les 2 zéros)

Maintenant que vous savez tout sur l'IBAN, a vous de bosser ;)

Voici la procédure Uniface que j'utilise pour le controle de l'Iban

Je vous laisse le soin de la transcrire en dans votre langage préféré :P


;--------------------------------------------------------------
; LP_IBAN
;--------------------------------------------------------------
ENTRY LP_IBAN
variables
numeric lv_mod, lv_cle
string lv_iban
string lv_cbanq, lv_cgui, lv_cptban, lv_rib
endvariables

; Dans le principe de l'IBAN, d'abord on met a la suite les champ du compte bancaire precede du pays et de 00
; avant de calculer ce qui va supplanter le "00" (qui sera la clé de controle)

lv_cbanq = cbanq
call LP_COMPLETER(lv_cbanq,5)
lv_cgui = cgui
call LP_COMPLETER(lv_cgui,5)
lv_cptban = cptban
call LP_COMPLETER(lv_cptban,11)
lv_rib = rib
call LP_COMPLETER(lv_rib,2)

; on pourrait faire plus simple mais cette manipulation a le mérite de rendre plus clair le découpage IBAN

iban1 = "FR00"
iban2 = lv_cbanq[1:4]
iban3 = "%%lv_cbanq[5:1]%%%%%lv_cgui[1:3]%%%"
iban4 = "%%lv_cgui[4:2]%%%%%lv_cptban[1:2]%%%"
iban5 = lv_cptban[3:4]
iban6 = lv_cptban[7:4]
iban7 = "%%lv_cptban[11:1]%%%%%lv_rib%%%"

; calcul de la clé : Phase 2 (déplacement du iban1 vers la fin)
lv_iban = "%%iban2%%%%%iban3%%%%%iban4%%%%%iban5%%%%%iban6%%%%%iban7%%%%%iban1%%%"

; calcul de la clé : Phase 3 (Remplacement des lettres par des chiffres)
lv_iban = $replace(lv_iban, 1, "A", "10", -1)
lv_iban = $replace(lv_iban, 1, "B", "11", -1)
lv_iban = $replace(lv_iban, 1, "C", "12", -1)
lv_iban = $replace(lv_iban, 1, "D", "13", -1)
lv_iban = $replace(lv_iban, 1, "E", "14", -1)
lv_iban = $replace(lv_iban, 1, "F", "15", -1)
lv_iban = $replace(lv_iban, 1, "G", "16", -1)
lv_iban = $replace(lv_iban, 1, "H", "17", -1)
lv_iban = $replace(lv_iban, 1, "I", "18", -1)
lv_iban = $replace(lv_iban, 1, "J", "19", -1)
lv_iban = $replace(lv_iban, 1, "K", "20", -1)
lv_iban = $replace(lv_iban, 1, "L", "21", -1)
lv_iban = $replace(lv_iban, 1, "M", "22", -1)
lv_iban = $replace(lv_iban, 1, "N", "23", -1)
lv_iban = $replace(lv_iban, 1, "O", "24", -1)
lv_iban = $replace(lv_iban, 1, "P", "25", -1)
lv_iban = $replace(lv_iban, 1, "Q", "26", -1)
lv_iban = $replace(lv_iban, 1, "R", "27", -1)
lv_iban = $replace(lv_iban, 1, "S", "28", -1)
lv_iban = $replace(lv_iban, 1, "T", "29", -1)
lv_iban = $replace(lv_iban, 1, "U", "30", -1)
lv_iban = $replace(lv_iban, 1, "V", "31", -1)
lv_iban = $replace(lv_iban, 1, "W", "32", -1)
lv_iban = $replace(lv_iban, 1, "X", "33", -1)
lv_iban = $replace(lv_iban, 1, "Y", "34", -1)
lv_iban = $replace(lv_iban, 1, "Z", "35", -1)

; calcul de la clé : Phase 4 (modulo 97)
lv_mod = frac(lv_iban / 97) * 97
lv_cle = 98 - lv_mod[round]
iban1 = "FR%%lv_cle%%%"
END

Entry LP_COMPLETER
params
string p_num : inout
string p_max : inout
endparams
length p_num
while ($result < p_max)
p_num = "0%%p_num%%%"
length p_num
endwhile
return 0
End



0 Commentaire


Commentaires recommandés

Aucun commentaire à afficher.

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×