Hacer relación de base de datos en dos hojas diferente

Hola Elsa antes que nada gracias por ayudarme, mi problema es el siguiente:
Tengo una base de datos con información de gente y de sus pagos, lo que quiero hacer es que de esa BD cuando yo ingrese los datos me salga en un hoja los que ya pagaron y en otra los que faltan por pagar, ojala me puedas ayudar como te dije antes gracias por todo.

1 respuesta

Respuesta
1
Aclarame esto de: '... cuando yo ingrese los datos...'
¿Esto significa que a medida que vayas cargando la base?
¿O ya la tenés cargada y en algún momento necesitas los 2 informes?
Esperaré tus aclaraciones
Sdos
Si perdón no explique bien antes, la BD se esta cargando constantemente con nuevos datos ya que es un registro de pagos de clientes entonces lo que cambia es el pago que hacen no sus datos solo cambia una celda y al mismo tiempo se ingresan nuevos clientes entonces esta a creciendo día con día, con resecto a los informes me gustaría que salgan cuando yo ingrese la nueva cantidad en cada cliente, haberte si ahora si me explique bien, gracias por tu tiempo un saludo enorme!
Bien, veamos si esto te sirve, porque no será tna fácil saber si estás modificando o creando un registro
La idea es que tengas 2 hojas, además de la base: Pagados y NoPagados.
En la base se controla el ingreso en la última col, por ej: DE y se controla si se ingresó algo en C. Esto es para reconocer que se agregó un registro-
Entrá al Editor, seleccioná con doble clic el objeto Hoja que sea tu base y copiá esto:
Private Sub Worksheet_Change(ByVal Target As Range)
'se controla lo ingresado en última col de datos, en este caso col D
If Target.Column = 4 Then
'vemos si la col C tiene un valor, es decir pagado
If Target.Offset(0, -1) <> "" Then
'se busca la primer fila libre para copiar la fila
libre = Sheets("Pagados").Range("A65536").End(xlUp).Row + 1
Target.EntireRow.Copy Destination:=Sheets("Pagados").Cells(libre, 1)
Else
'si no tiene datos en col C se pasa a no pagados
libre = Sheets("NoPagados").Range("A65536").End(xlUp).Row + 1
Target.EntireRow.Copy Destination:=Sheets("NoPagados").Cells(libre, 1)
End If
End If
End Sub
Pruébalo y comentame cómo vamos.
Hola elsa pues veras ya lo probé y a lo mejor no lo esoy haciendo bien por que si me pasa los datos a la hoja de pagados pero a la de no pagados no me aparece nada veras esto es lo que tengo en la BD:
Nombre Domicilio Contrato Concepto Cantidad
XXXXX        xxxxx          xxxx              xxxxx       
de la columna A a la E respectivamente
cuando en la columna E le agrego alguna "cantidad" se pasan los datos a la hoja "pagados" pero si no ingreso nada no se pasan a la hoja de no pagados
mi idea original era la siguiente:
Si yo ingreso una "cantidad" mayor que $1.00 que se pasen a "pagados", y si yo ingreso solamente $0.00 que se pasen a "no pagados" y que no se repita la información en varias filas ya que actualmente al yo poner $0.00 en la columna "cantidad" también se pasan la información a "pagados" y aparece en la fila siguiente sin eliminar la anterior
ojala me puedas ayudar con eso ya que no soy muy bueno en excel (creo que se nota jejejeje) de cualquier forma ya hemos avanzado mucho y te lo agradezco inmensamente, un abrazo y gracias
Bien, en primer lugar supongo que ya habrás ajustado la col a evaluar, siendo la 5 en lugar de 4.
Ahora falta que reemplazes esta línea:
If Target.Offset(0, -1) <> "" Then
por esta otra:
If Target.Offset(0, -1) > 0 Then
Pruébalo y comentame
barbaro!!!! execelente elsa en verdad eres genial cambie lo que me dijiste y ahora funciona bien solo que para que se valla la info a no pagados tengo quer dejar libra la columna de concepto, solo un problema cuando quiero guardar el documento me dice que no puedo guardar en un libro si macros ya lo habilite en el centro de confianza pero aun asi no me deja guardarlo que hago?
Gracias por tu paciencia saludos
No necesariamente. Es porque la línea evalúa por Target. Offset(0,-1) > 0, es decir que evalúa si la anterior a la col del target.
Nota para todos los usuarios que lean esta respuesta:
Recién en tu 3er entrada definiste la ubicación de los datos. Como podrás ver, sin referencias precisas la rutina no sale precisa, hay que adaptarla y luego surgen estos inconvenientes.
REsumiendo: si tu col con valores será la 5, y solo evaluará si esta col tiene algún valor dejá tu rutina así:
-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'se controla lo ingresado en última col de datos, en este caso col E
If Target.Column = 5 Then
'vemos si la col C tiene un valor, es decir pagado
If Target > 0 Then
'se busca la primer fila libre para copiar la fila
libre = Sheets("Pagados").Range("A65536").End(xlUp).Row + 1
Target.EntireRow.Copy Destination:=Sheets("Pagados").Cells(libre, 1)
Else
'si no tiene datos en col C se pasa a no pagados
libre = Sheets("NoPagados").Range("A65536").End(xlUp).Row + 1
Target.EntireRow.Copy Destination:=Sheets("NoPagados").Cells(libre, 1)
End If
End If
End Sub
--------------
woooow! Gracias Elsa de verdad excelente ya funciono de maravilla te agradezco tu tiempo y paciencia en verdad muchísimas gracias y la más alta calificación que tenga todoexpertos para ti gracias de nuevo

Añade tu respuesta

Haz clic para o