calcul cle iban

Le
daniel78
Bonjour,
J'essaye en vain de calculer la cle iban suivant l'exemple donné sur
wikipédia.

http://fr.wikipedia.org/wiki/ISO_13616

Si quelqu'un a utilisé ce code, peut-il le mettre à disposition pour
que je comprenne mon erreur, ou un autre fichier qui permet ce calcul.
Merci par avance de vos réponses.
Daniel78
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
h2so4
Le #24138221
bonjour,

le code Vba que l'on trouve sur le site semble en effet comporter quelques erreurs.

voici une version corrigée

Function iban(iba As String) As String
If Not iba = "" Then
Texte1 = UCase(iba)
Texte1 = Replace(iba, " ", "")
trib = Right(Texte1, Len(Texte1) - 4)
tCodePays = Left(iba, 2)
iba = tCodePays & "00" & trib
iba = Right(Texte1, Len(Texte1) - 4) & Left(Texte1, 4)
n = 1
While n <= Len(iba)
x = Mid(iba, n, 1)
If Not IsNumeric(x) Then
iba = Replace(iba, x, (Asc(x) - 55), 1, 1)
End If
n = n + 1
Wend
iCodeNum = 98 - Mod97(iba)
If iCodeNum < 10 Then
sCodeStr = "0" & iCodeNum
Else
sCodeStr = iCodeNum
End If
iba = tCodePays & sCodeStr & trib
iban = iba
End If
End Function
Function Mod97(Numero As String) As Integer
Nro = Numero
A = 0
B = 0
C = 0
E = Right(Nro, 6)
D = Mid(Nro, Len(Nro) - 11, 6)
Select Case Len(Nro)
Case 13 To 20
C = CDbl(Mid(Nro, 1, Len(Nro) - 12))
Case 21 To 28
C = CDbl(Mid(Nro, Len(Nro) - 19, 8))
If Len(Nro) <> 20 Then B = CDbl(Mid(Nro, 1, Len(Nro) - 20))
Case 29 To 36
C = CDbl(Mid(Nro, Len(Nro) - 19, 8))
B = CDbl(Mid(Nro, Len(Nro) - 27, 8))
A = CDbl(Mid(Nro, 1, Len(Nro) - 28))
Case Else
Mod97 = "#VALEUR!"
Exit Function
End Select
div97 = Int((A * 93 + B * 73 + C * 50 + D * 27 + E Mod 97) / 97)
Mod97 = (A * 93 + B * 73 + C * 50 + D * 27 + E Mod 97) - div97 * 97
End Function

Sub test()
MsgBox iban("BE00510007547061")
End Sub
daniel78
Le #24138341
Bonjour et merci,
ça fonctionne très bien.
juste cette ligne à changer
trib = Mid(IBA, 3, tlong), que je connais pas...
et voilà mon souci réglé.
Encore merci.
Peut-être pouvez-vous donner l'info sur wikipédia...

Bonne année 2012

Daniel78
Publicité
Poster une réponse
Anonyme