Bonjour,
J'essaye en vain de calculer la cle iban suivant l'exemple donn=E9 sur
wikip=E9dia.
http://fr.wikipedia.org/wiki/ISO_13616
Si quelqu'un a utilis=E9 ce code, peut-il le mettre =E0 disposition pour
que je comprenne mon erreur, ou un autre fichier qui permet ce calcul.
Merci par avance de vos r=E9ponses.
Daniel78
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
h2so4
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
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
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
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
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...
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...