** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Utilidades: Función cambio CCC bancario por IBAN
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoUtilidades: Función cambio CCC bancario por IBAN

 Responder Responder
Autor
Mensaje
Pablillo I Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Julio/2006
Localización: España
Estado: Sin conexión
Puntos: 298
Enlace directo a este mensaje Tema: Utilidades: Función cambio CCC bancario por IBAN
    Enviado: 24/Octubre/2013 a las 18:59
Hola os dejo una pequeña función que cambia el típico CCC bancario por el IBAN. A partir de ahora y en los meses venideros vamos a oir hablar bastante de él.


Function CambiaCCCxIBAN(sCCC As String, sPais As String) As String
'El pais ha de entrar según la codificación de la norma ISO3166
'El CCC ha de entrar con 20 caracteres valores válidos del 0 al 9

Dim sControl As String
Dim iPos As Integer
Dim iLen As Integer
Dim sDC As String
Dim sParte As String

On Error Resume Next

'Compruebo que los valores de entrada sean aceptables.
If Len(sPais) <> 2 Then
    CambiaCCCxIBAN = Null
    Exit Function
End If
If Not IsNumeric(sCCC) Then
    CambiaCCCxIBAN = Null
    Exit Function
End If

'Primer atisbo de IBAN (CCC + Pais + 00)
sControl = sCCC & sPais & "00"
'Cambia los caracteres del pais por el código numerico
sControl = Replace(sControl, "A", "10")
sControl = Replace(sControl, "B", "11")
sControl = Replace(sControl, "C", "12")
sControl = Replace(sControl, "D", "13")
sControl = Replace(sControl, "E", "14")
sControl = Replace(sControl, "F", "15")
sControl = Replace(sControl, "G", "16")
sControl = Replace(sControl, "H", "17")
sControl = Replace(sControl, "I", "18")
sControl = Replace(sControl, "J", "19")
sControl = Replace(sControl, "K", "20")
sControl = Replace(sControl, "L", "21")
sControl = Replace(sControl, "M", "22")
sControl = Replace(sControl, "N", "23")
sControl = Replace(sControl, "O", "24")
sControl = Replace(sControl, "P", "25")
sControl = Replace(sControl, "Q", "26")
sControl = Replace(sControl, "R", "27")
sControl = Replace(sControl, "S", "28")
sControl = Replace(sControl, "T", "29")
sControl = Replace(sControl, "U", "30")
sControl = Replace(sControl, "V", "31")
sControl = Replace(sControl, "W", "32")
sControl = Replace(sControl, "X", "33")
sControl = Replace(sControl, "Y", "34")
sControl = Replace(sControl, "Z", "35")

'Cálculo del dígito de control IBAN
'Empleo la segunda parte del cálculo de la norma ISO 7604 que es partir la cadena en trozos de 9 dígitos
iPos = 1: iLen = 9
sParte = Mid(sControl, iPos, iLen)
Do
    sDC = CStr(sParte Mod 97)
    If iPos + iLen > Len(sControl) Then Exit Do
    iPos = iPos + iLen
    If Len(sDC) = 2 Then
        iLen = 7
    Else
        iLen = 8
    End If
    sParte = sDC & Mid(sControl, iPos, iLen)
Loop
sDC = 98 - Int(sDC)
If Len(sDC) < 2 Then
    sDC = "0" & sDC
End If
'Composición final del IBAN (Pais + DC + CCC)
CambiaCCCxIBAN = sPais & sDC & sCCC

End Function


Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable