calcul cle iban

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

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 rponses.
Daniel78
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