Con la nueva normativa las empresas tienen que añadir el código IBAN a sus cuentas bancarias. Bueno, pues esta función te calcula el IBAN y lo devuelve, para por ejemplo validarlo o sustituir las cuentas en tu base de datos. La normativa para el cálculo del IBAN la puedes consultar aquí.
Primero fuí a lo sencillo utilizando la funcion Mod de visual basic que te devuelve el resto de una división, pero no funciona. Entonces hay que hacerlo como en la validación, cogiendo porciones de la cuenta.
Os la comparto, porque lo busqué en internet hasta la saciedad y no encontré nada que me sirviera. Y como opino que hay que compartir el conocimiento, espero que os sirva y os ahorre trabajo.
Tener en cuenta que yo solo uso cuentas bancarias de mi país, por eso añado al final de la cuenta "142800" y en el return el "ES" cada cual que ponga el suyo.
LLamada a la función:
Cuenta = cadena de cuenta bancaria + "142800" (por ser España)
DimeIBAN(Cuenta)
Función:
Private Function DimeIBAN(
ByVal NumeroCuenta
As String)
As String
Dim ParteCuenta
As String
Dim ProximosNumeros
As Integer
'Módulo de los primeros 9 digitos
ParteCuenta =
String.Format(
"{0:00}",
CInt(NumeroCuenta.Substring(0, 9))
Mod 97)
' Cogemos otro grupo de digitos de la cuenta
NumeroCuenta = NumeroCuenta.Substring(9, NumeroCuenta.Length - 9)
' Recorremos la cuenta hasta el final
While NumeroCuenta <>
""
If CInt(ParteCuenta) < 10
Then
ProximosNumeros = 8
Else
ProximosNumeros = 7
End If
If NumeroCuenta.Length < ProximosNumeros
Then
ParteCuenta = ParteCuenta & NumeroCuenta
NumeroCuenta =
""
Else
ParteCuenta = ParteCuenta & NumeroCuenta.Substring(0, ProximosNumeros)
NumeroCuenta = NumeroCuenta.Substring(ProximosNumeros, NumeroCuenta.Length - ProximosNumeros)
End If
ParteCuenta =
String.Format(
"{0:00}", ParteCuenta
Mod 97)
End While
Return "ES" &
String.Format(
"{0:00}", 98 - ParteCuenta)
End Function
Devuelve:
ESXX12345678901234567890
Tabla conversión de letras a números
Nota: Ni que decir tiene que esta misma función sirve para comprobar que un iban es correcto, para no tocar la función, habría que pasar como parámetro la parte correspondiente a la cuenta. Así nos devolvería la IBAN completa.
--------------------------------------------------------------------------------------
Escoger un camino significaba abandonar otros. (Paulo Coelho)