Ayuda con varias hojas

Hola experto, espero me puedas ayudar...
Tengo un archivo de excel con varias hojas.
Hoja1=Datos del cliente (Rut, Apellidos, Nombres, Direcciones, Teléfonos, etc)
Hoja2=Códigos de cobranza( 1 Honorarios, 2 Capital, 3 Intereses)
Hoja3=Pagos (rut,numcuota,Capital,Honorarios,Interes,valorcuota,fechapago,fechavenc,montopagado)
Hoja4=INFORME, que es lo que necesito crear. La idea es que al ingresar el rut, me aparecan todos los pagos del cliente, etc...
Los datos los recolecte de un sistema antiguo en formato dbf y los exporte a excel para poder generar el informe.
Espero se me entienda y puedas ayudarme..
Atenta a tus comentarios.

5 respuestas

Respuesta
1
Este código se activa con un botón llamado "CommandButton1" que debe estar en la hoja del informe (Hoja4). Debes ajustar los parámetros para que calce con el formato de tu hoja de origen (Hoja3) y destino (Hoja4).
Este código hace la tarea más complicada que es listar todos los pagos del cliente en cuestión. Para traer el resto de los datos, puedes utilizar la función BUSCARV de Excel.
Espero te sea útil.
Saludos.
'Esto se debe pegar en la hoja destino (Hoja4)
Private Sub CommandButton1_Click()
    Dim dblFil As Double
    Dim strColRut As String
    Dim hojaOrigen As Worksheet
    Dim intColCopia As Integer
    Dim intNColCopia As Integer
    Dim dblFilaPega As Double
    Dim intColPega As Integer
    Dim strCriterio As String
    Dim i As Integer
   '------------------------PARÁMETROS----------------
    'Origen
    Set hojaOrigen = Hoja3 'Hoja de la que se extraerán los datos
    dblFil = 2 'Fila en la que inicia la búsqueda
    strColRut = "A" 'Columa que contiene el rut en la hoha origen
    intColCopia = 2 'Número de la columna en que comienza la fila a copiar
    intNColCopia = 8 'Número de columnas a copiar
    'Destino
    dblFilaPega = 3 'Primera fila, de la hoja destino en que se _
                    Comenzarán a cargar los pagos
strCriterio = "A2" 'Celda en que se encuentra el rut a buscar
intColPega = 1 'Número de la columna en que se comienzan a pegar los datos copiados
    '------------------------------------------------------


    'Buscar todas las coincidencias
    Do Until (dblFil = 0)
        dblFil = fcnBuscar(hojaOrigen, strColRut, Range(strCriterio).Text, dblFil)
        If dblFil <> 0 Then
            For i = intColCopia To (intNColCopia + intColCopia - 1)
                Cells(dblFilaPega, i - (intColCopia - intColPega)) = hojaOrigen.Cells(dblFil, i)
            Next
            dblFilaPega = dblFilaPega + 1
            dblFil = dblFil + 1
        End If
    Loop
End Sub

'Esto se debe pegar en un módulo, aunque si se pega en la misma hoja, también funciona.
Function fcnBuscar(hojaBusq As Worksheet, _
              strColumna As String, _
              valor, _
              Optional dblFilaIni As Double = 1) As Double
    Dim strRango As String
    Dim resulta As Range
    fcnBuscar = 0
    'Buscar en la primera fila
    Set resulta = hojaBusq.Range(strColumna & dblFilaIni).Find(What:=valor, LookIn:=xlValues, LookAt:=xlWhole)
    'Si no hay asierto
    If resulta Is Nothing Then
        'Buscar en las siguientes filas
        strRango = strColumna & dblFilaIni & ":" & _
                   strColumna & hojaBusq.Range(strColumna & "65535").End(xlUp).Row + 1
        'MsgBox strRango
        Set resulta = hojaBusq.Range(strRango).Find(What:=valor, LookIn:=xlValues, LookAt:=xlWhole)
        If Not resulta Is Nothing Then
            fcnBuscar = resulta.Row
        End If
    Else
        'si hay asierto, retornar la fila
        fcnBuscar = resulta.Row
    End If
End Function
Primero muchas gracias por responder... probé tu código y tengo unos problemas... Ajuste nombre de variables a mi situación y me ocuure lo siguiente:
Don tu indicas el nombre de la hoja desde donde se extraerán los datos (Hoja3), yo la cambie por direcciones1, y al ejecutar el código, me marca esa linea indicándome error 424 que se requiere un objeto... Coloque entre comillas el nombre y me arroja el siguiente error: error de compilación, no coinciden los tipos...
Que puedo hacer...
Atenta a tus comentarios...
Di vas al editor de código, en el examinador de proyecto (panel superior izquierdo) verás todas las hojsa que tiene tu proyecto, una de todas ellas debe decir: Hojaxx(direcciones1), donde xx es un número.
El nombre que debes asignar a esa variable no es lo que está entre (), sino lo que está fuera de ellos, osea Set hojaOrigen = Hojaxx, de otra forma, tendrías que hacer la asignación como:
Set hojaOrigen = Sheets("direcciones1")
Respuesta
1
Bueno de manera básica puedes hacerlo de varias formas mediante el autofiltro que al flitrar por el rut en la hoja de pagos te mostrara las coincidencias, las tablas dinámicas y/o por ultimo por programación
Primemero que nada muchas gracias por responder. Tienes algún ejemplo o sitio web donde encontrar información, ya que en google la información que encuentro sobre los filtros justamente es de solo cuando se requiere mostrar un registro del cliente, eso me serviría si necesitara una sola cutoa del cliente, cuando lo que necesito que es aal ingresar el rut, me muestra todas las cuotas del cliente... me entiendes...
Bueno, una vez más gracias y quedo atenta a cualquier ayuda u orientación que me puedas ayudar a salir de este cachito que me encomendaron mis jefes...
;)
Bueno puedes hacerlo mediante una tabla dinámica donde en la información de reglones pones primero el cliente y después el rut ahí te y en cantidad el rut. Así te mostrara los rut por clientes y las cantidades y no lambentablemente no tengo web con ejemplos pero busca el siguiente libro
John Wiley & Sons-Excel for Scientists and Engineers - Numerical Methods-2007.pdf
Respuesta
1
Recibe mis cordiales saludos, distes un buen paso, que es la importación de datos, ahora lo que necesitas es solo filtrar los datos de acuerdo al ruc que ingreses, para que automáticamente te aparezcan los datos en las hojas respectivas, esto es posible, pero necesitaría tu archivo para poder desarrollarte la macro, envíamelo a mi correo [email protected], de esta manera poder ayudarte.
Respuesta
1
..
Como en la hoja 3 tienes todos los pagos, con su RUT, utiliza un filtro en la hoja3 por RUT, en el menu Datos/Filtro.
..
Espero haberte ayudado, si tienes más dudas házmelo saber. No olvides puntuar mi respuesta.
Respuesta
1
No que queda claro que deseas integrar en el informe y de donde deseas tomar la información...
POr ejemplo:
El informe contiene o debe contener los siguientes campos...¿Cuáles serán?
Los pagos donde están y que requieres del pago unicamente el monto o requiere mayor información...
¿Este informe es dimamico...?
Hay funciones en Excel, que son para la extracción de datos de las hojas...
Para hacer esto deberán:
Datos / Obtener datos externos... pero realmente los tomas del mismo libro en caso necesario...
Esto hará que la hoja de excel se comporte como lo que no es un manejador de bases de datos...
Para la extracción de información... y es relativamente simple... Si los datos tienen una buena estructura...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas