Bonjour,
voici une fonction personnalisée pour convertir un compte belge (BBAN) en IBAN. cette fonction fait appel à une autre fonction mod97 qui permet de calculer le modulo 97 sur des entiers de plus de 9 chiffres.
fonctions à insérer dans un module et à tester.
appel de la fonction
A1 bumero de compte au format BBAN
en B1 (par exemple) =bbantoibanBE(A1)
Function bbantoibanBE(ByVal s As String)
'Créer un IBAN artificiel, composé du code du pays (ISO 3166), suivi de "00" et du BBAN (sans caractères autres qu'alphanumériques).
'Un BBAN belge comme 510-0075470-61 devient BE00510007547061
'Déplacer les 4 premiers caractères de l'IBAN à la droite du numéro.
'Résultat : 510007547061BE00
'Convertir les lettres en chiffres, selon la règle suivante. Chaque lettre est remplacée par les deux chiffres du nombre obtenu en ajoutant 9 à son rang dans l'alphabet. On obtient 10 pour A, 11 pour B… et 35 pour Z.
'Résultat : 510007547061111400
'Appliquer le MOD 97-10 (cf. ISO 7064).
'Calculer le modulo 97, c'est-à-dire le reste de la division du résultat précédent par 97, et retrancher ce reste de 98. Si le résultat comporte un seul chiffre, le faire précéder du chiffre zéro.
'Insérer le résultat ainsi obtenu à la position 3 de l'IBAN artificiel créé dans l'étape préalable (en remplacement des 2 zéros) :
'98 - 36 = 62, d'où IBAN = BE62510007547061
s = Replace(Replace(s, "-", ""), " ", "")
n = s & "111400" ' pour la belgique
m = Mod97(n)
bbantoibanBE = "BE" & Format(m, "00") & s
End Function
Function Mod97(ByVal Numero As String) As Integer
'for IBAN
nro = Numero
While Len(nro) > 9
n = Left(nro, 9) Mod 97
nro = Format(n, "00") & Right(nro, Len(nro) - 9)
Wend
n = nro Mod 97
n = 98 - n
Mod97 = n
End Function