Macro para buscar datos con rango variable, con dos criterios y generación de informe en PDF

Busque en la página para ver si ya existía algo pero no encontré nada o si encontré pero no exactamente lo que necesito.

Administro el edificio donde vivo junto con otro vecino y a mí me toco generar los avisos de cobro y recibos de pago, ya tengo una macro que genera automáticamente los 56 avisos de cobro en PDF, dicha macro la pude crear gracias a los diferentes aportes que han hecho.

Pero esta macro rebasa por mucho mi capacidad, es por eso que acudo a ustedes.

Mi problema es que para generar los recibos de pago, es diferente, ya que generalmente no pagan todos, porque podría utilizar la macro de los avisos de cobro para esto pero no es el caso, ya que no quiero que genere recibos de pago en 0. ¿Qué es lo que necesito?

En la hoja "ingresos-egresos" capturo los depósitos en diferentes columnas desde la A a la I, desde la fila 2 hasta que acabe el año, esto es por mes y departamento, en la hoja "RCP" genero los recibos de pago de acuerdo a los datos de la hoja "ingresos-egresos".

En la hoja "RCP" en la celda "J6" ingreso el departamento (esto lo debe de hacer la macro de acuerdo a los datos de la hoja "ingresos-egresos") y en la celda "J5" ingreso el mes (esto lo capturo yo antes de generarlos), de ahí con las fórmulas obtiene los datos necesarios de diferentes hojas para generar el recibo.

La macro que necesito es que de acuerdo a los depósitos capturados en la hoja "ingresos-egresos" del mes en curso solo genere los recibos de dichos departamentos y el mes en curso. Pero cuando rentan el departamento puede haber dos depósitos de un mismo departamento por que el dueño paga el mantenimiento y el inquilino el gas, en este caso necesito que la macro lo reconozca y solo genere un solo recibo, que no lo duplique, también puede encontrar en la misma columna de los departamentos la palabra "egreso", cuando suceda esto necesito que la macro la reconozca y se la salte, una vez generando todos los recibos de dicho mes la macro pare.

Les adjunto una imagen. De antemano gracias

1 respuesta

Respuesta
1

H o l a:

Podrías enviarme tu archivo y me explicas con un par de ejemplos, cuando no es rentado y cuando sí es rentado, cómo quieres los recibos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jose Carlos Valdes” y el título de esta pregunta.

Ya te envíe el correo junto con un video, de antemano gracias

les adjunto un video

https://youtu.be/DBss2mtLKK8

{"lat":32.4642739,"lng":-117.0012078}

H o l a:

Podrías enviarme también el archivo con datos de ejemplo para realizar mis pruebas.

¡Gracias! Ya te lo envíe de nuevo a la dirección del correo, avisame si te llegó

Saludos

H o l a:

Te anexo la macro para imprimir todos los recibos

Sub RecibosdePagoTodos()
'Act.Por.Dante Amor
    'RCPIMPRIMIR Macro
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("ingresos-egresos")
    Set h2 = Sheets("RCP")
    Set h3 = Sheets("Generados")
    h3.Cells.Clear
    '
    'ru = "F:\Emperadores\RecibosdePago\2015\"
    ru = ThisWorkbook.Path & "\"
    If h2.[J5] = "" Then
        MsgBox "Falta poner el mes", vbCritical, "ERROR"
        Exit Sub
    End If
    '
    YesNo = MsgBox("¿Imprimir todos los recibos de: " & [J5] & "?." & vbCr & _
            "Presione Si para proceder o No para cancelar", vbYesNo + vbInformation, "Aviso")
    Select Case YesNo
    Case vbYes
        For i = 3 To h1.Range("A" & Rows.Count).End(xlUp).Row
            If h1.Cells(i, "B") = h2.[J5] And h1.Cells(i, "C") = h2.[J5] And _
               h1.Cells(i, "A") <> "egreso" Then
                Set b = h3.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
                If b Is Nothing Then
                    u = h3.Range("A" & Rows.Count).End(xlUp).Row + 1
                    h3.Cells(u, "A") = h1.Cells(i, "A")
                    '
                    h2.[J6] = h1.Cells(i, "A")
                    h2.Range("A1:K34").ExportAsFixedFormat Type:=xlTypePDF, Filename:=ru & h2.Range("J6")
                    '
                    h2.Range("J3").Value = h2.Range("J3").Value + 1
                    h2.Range("L3").Value = h2.Range("L3").Value + 1
                End If
            End If
        Next
        ActiveWorkbook.Save
    Case vbNo
        MsgBox "Operación Cancelada", vbExclamation, "Aviso"
    End Select
End Sub

¡Gracias! la reviso y te comento.

Recuerda valorar la respuesta!

Dante funciona excelente muchas gracias, una pregunta donde puedo ver todas las funciones de de las macros y para que sirven, para aprender. De antemano gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas