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)
Excelente!
ResponderEliminarHola Antonio,
EliminarTe agradezco el comentario. Es de bien nacidos ser agradecidos, nos decían a los que tenemos unos años.
Un cordial saludo.
Pues si, muchas gracias por compartir tu conocimiento! Necesitamos mas gente como tu!
ResponderEliminarGracias compañero.
EliminarRealmente hay muchas personas que comparten sus conocimientos. Todos nos beneficiamos de ello, y es de agradecer.
Esta es mi forma de aportar mi granito de arena y devolver en pequeña media algo de lo que recibo. Esta función, me consta que está siendo útil por el número de visitas, me alegro que te haya sido útil.
Gracias