Bonjour Isatomafa,
Il me semble que Substring n'existe pas en VBA d'où un code faux pour la fonction Iban du classeur. Utilise le code suivant plutôt (tiré de wikipédia) :
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
Function convIBAN(lettre As String)
convIBAN = (Asc(lettre) - 55)
End Function
Function ControleIban(LeNumIban As String) As Boolean
Dim x As String
LeNumIban = Replace(LeNumIban, " ", "")
LeNumIban = Right(LeNumIban, Len(LeNumIban) - 4) & Left(LeNumIban, 4)
n = 1
While n <= Len(LeNumIban)
x = Mid(LeNumIban, n, 1)
If Not IsNumeric(x) Then
LeNumIban = Replace(LeNumIban, x, convIBAN(x), 1, 1)
End If
n = n + 1
Wend
n_iban = Mod97(LeNumIban)
If n_iban = 1 Then
ControleIban = True
Else
ControleIban = False
End If
End Function