Eliminar créditos pagados

Hola Julio
Una nueva consulta.
Tengo una hoja en la que anoto los créditos diarios que se van acumulando a los de días anteriores. En otra hoja anoto los Pagos diarios. Las columnas en las dos hojas son: Código, Nombre, Fecha e Importe.
Que macro puedo utilizar para que me elimine los créditos pagados.
Muchas gracias de antemano

1 Respuesta

Respuesta
1
En que celda pones que se han pagado...
Aclarame esto
>Un saludo
>Julio
La hoja de los Pagos va independiente de la de los Créditos pendientes y tienen las mismas columnas, con la diferencia que una hoja es de Créditos y la otra es de Pagos. En la de Créditos no pongo otra columna para saber cuando se han pagado porque el equipo que tengo es muy limitado y para evitar que el archivo se haga demasiado grande lo que quiero hacer es eliminar los créditos pagados.
¿Es posible introducir algún MsgBox que me consulte antes de eliminar algún registro?
Muchas gracias
Vale, pero como sé los que se han pagado si no tengo ese dato a ver explicameló.
>Un saludo
>Julio
Perdona Julio por explicarme tan mal
Voy a intentarlo de nuevo
Los Créditos los saco diariamente de una Hoja que se se llama Ventas y se van acumulando a los que había anteriormente. En esa hoja Ventas también están reflejados los Pagos. Estos pagos los paso también diariamente a su hoja correspondiente. Es posible tomar los pagos de cada día (previamente pueden estar copiados en una hoja temporal), ver a que crédito corresponde y eliminar dicho crédito una vez aceptado.
No se si esta vez lo he explicado bien.
Gracias por tu paciencia
Pues no no te explicas en lo que me interesa pones "En esa hoja ventas también están reflejados los pagos..." ¿pero dónde lo reflejas? En alguna columna pondrás pagado o algo parecido digo yo. Si no sé de donde tomar el valor de que están pagados como voy a hacer nada. A ver si ahora me has entendido.
>Un saludo
>Julio
Hola Julio
Los pagos al igual que los créditos los saco de la hoja que se llama Ventas y los anoto en una hoja que se llama Pagos y que tiene las mismas columnas que la hoja de Créditos : Código, Nombre, Fecha e Importe.
Entonces, suponiendo que hoy se han efectuado diez pagos, seria ir tomando cada pago y ver a que crédito corresponde, seleccionar este y pedir aceptación para eliminarlo.
Seria más lógico tener una sola hoja con Créditos y Pagos y colocar a la derecha de las columnas citadas una con la fecha de pago, pero los créditos una vez pagados los voy eliminando porque el equipo que tengo va muy justo de disco duro y el listado de créditos es bastante grande.
Perdona por todo el lio.
Un saludo
Ya era hora lo más que te has acercado a decirme que tenias una hoja que se llamaba Pagos es " ... y los anoto en su hoja correspondiente..." (pero no tenía ni idea cual era esta hoja).
De todas formas, pienso que estas equivocado, tienes más bytes ocupados al tener dos hojas una de pagos y otra de créditos con sus cabeceras correspondientes que por ejemplo dejar todo en una hoja con una sola referencia al crédito y anotar pagado al final y cuando esto courra que te borre todas las celdas referentes al crédito y por ejemplo que te dejara la fecha de concesión y la fecha de pago para tener un control por ingresos entre fechas.
Piensaló, me lo dices reconstruimos de nuevo tu base de Datos, preparamos las macros de comprobación y eliminación de lo pagado. Si no quieres hacerlo te genero la macro de que cuando tu quieras repase la hoja Pagos y que vaya borrando todos los registros que coincidan en la hoja créditos.
Tu mismo decides
>Un saludo
>Julio
Hola Julio
Bien parece que la cosa se va aclarando. Tienes razón en lo que dices pero el jefe quiere que se lo presente los créditos pendientes por una parte y los pagos por otra.
Mandame la macro que repase la hoja Pagos y elimine una vez aceptado los registros que coincidan en la hoja de Créditos.
Muchas gracias
Vale, pues como quieras, pero teniendo un pc tan antiguo mala solución, en fin esta es:
Private Sub Pagos()
Sheets("Pagos").Select
Range("A2"). Select 'Pienso que tienes cabeceras y en la columna A tienes el numero de 'registro de tu credito que debe coincidir con la hoja creditos
valor = ActiveCell.Value
celda = ActiveCell.Address
Do While ActiveCell.Value <> ""
Sheets("Creditos").Select
Range("A1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value <> valor Then
ActiveCell.Offset(1, 0).Select
End If
Loop
If ActiveCell.Value = valor Then
Selection.Entire.Row.Delete
End If
If ActiveCell.Value = "" Then
Sheets("Pagos").Select
Range(celda).Select
ActiveCell.Offset(1, 0).Select
valor = ActiveCell.Value
celda = ActiveCell.Address
GoTo Salir
End If
Sheets("Pagos").Select
Range(celda).Select
ActiveCell.Offset(1, 0).Select
valor = ActiveCell.Value
celda = ActiveCell.Address
Salir:
Loop
End Sub
Ya ves que el nombre de las hojas he puesto Créditos y Pagos si no es así lo cambias.
>Un Saludo
>Julio
PD: Si te sirvio puntua y finaliza la consulta.
Hola Julio
He probado la macro y se me bloquea en el segundo bucle Do While.
Dime si puedo mandarte el archivo a alguna dirección para que lo veas.
Gracias
Un saludo
Hay un error en esta linea que pone:
Selection.Entire.Row.Delete
Debería de quedar así:
Selection.EntireRow.Delete
Disculpa, si te sigue dando problemas me lo dices y ya veremos que hacemos.
>Un saludo
>Julio
Julio
Te mando un ejemplo de como tengo los datos en las hojas de Créditos y Pagos.
He insertado tu macro en la hoja de Créditos y en el editor de VB he ido paso a paso a cada sentencia. Cuando compara el dato Nº Cliente (Pagos) 442 con el mismo numero en la hoja de Créditos el programa no puede salir del bucle Do While.
Siento darte tanto la paliza, me vas a odiar
Un saludo
Créditos
Nº cliente nombre fecha importe
441 Paco 06-06-09 74,53
442 Isidoro 06-06-09 95,69
448 Marcial 06-06-09 330,80
463 Pepito 08-06-09 51,98
442 Isidoro 09-06-09 11,11
493 Genaro 09-06-09 33,57
473 Eladio 10-06-09 80,75
448 Marcial 10-06-09 17,66
Pagos
Nº cliente nombre fecha importe
442 Isidoro 18-06-09 95,69
448 Marcial 18-06-09 330,80
463 Pepito 18-06-09 51,98
Vale, una pequeña modificación para evitar el Loop eterno, quedaría así:
Private Sub Pagos()
Sheets("PAGOS").Select
Range("A2").Select
valor = ActiveCell.Value
celda = ActiveCell.Address
Do While ActiveCell.Value <> ""
Sheets("CREDITOS").Select
Range("A1").Select
Do While ActiveCell.Value <> valor
ActiveCell.Offset(1, 0).Select
Loop
If ActiveCell.Value = valor Then
Selection.EntireRow.Delete
End If
If ActiveCell.Value = "" Then
Sheets("PAGOS").Select
Range(celda).Select
ActiveCell.Offset(1, 0).Select
valor = ActiveCell.Value
celda = ActiveCell.Address
GoTo Salir
End If
Sheets("PAGOS").Select
Range(celda).Select
ActiveCell.Offset(1, 0).Select
valor = ActiveCell.Value
celda = ActiveCell.Address
Salir:
Loop
End Sub
Hice la macro de cabeza y un par de cosas no las hice bien, ahora el Loop se realizará hasta que conincida con la variable valor que traemos de la hoja PAGOS.
>Un saludo
>Julio
Hola Julio
Sigo teniendo problema con el bucle
Aparte de esto para eliminar el crédito tienen que coincidir el (Código o Nombre ) y el Importe, porque hay varios clientes que tiene varios créditos, tal y como te he mandado en el ejemplo.
Muchas gracias por tu tiempo
Un saludo
Hola Julio
Perdona acabo de probarla de nuevo y va bien. No hay problema con los bucles.
El único problema es que al borrar los créditos necesita la coincidencia del (Código o Nombre) y el Importe
Gracias
Un saludo
Vaya tela con la macro por no decirme todo desde el principio, vale entonces hay que tomar 1 variable más la del importe:
Private Sub Pagos()
Dim valor As String
Dim importe As String
Dim celda As String
Sheets("PAGOS").Select
Range("A2").Select
valor = ActiveCell.Value
importe=ActiveCell.Offset(0,3).Value
celda = ActiveCell.Address
Do While ActiveCell.Value <> ""
Sheets("CREDITOS").Select
Range("A1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = valor And ActiveCell.Offset(0,3).Value=importe Then
Selection.EntireRow.Delete
Exit Do
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Sheets("PAGOS").Select
Range(celda).Select
ActiveCell.Offset(1, 0).Select
valor = ActiveCell.Value
importe=ActiveCell.Offset(0,3).Value
celda = ActiveCell.Address
Loop
End Sub
A ver ahora si ya te funciona como quieres. Si es así puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas