¿Cómo enlazar en una orden de pago, múltiples ordenes de compra de un mismo proveedor?

Para Dante Amor:

Saludos,

Tengo en mi libro de Excel una hoja ORDEN DE PAGO, la misma está configurada para emitir la orden del pago por UNA SOLA orden de compra u orden de servicio, pero que pasa, se me da el caso en que de un mismo proveedor tengo elaboradas 3 órdenes de compra o x número de órdenes de servicio, y yo deseo que en una sola orden de pago pueda sacarle todas las ordenes que le tenga pendiente a ese proveedor, ejemplo a Pedro Pérez que es mi proveedor de cauchos, en la orden de compra nº 1 le adquirí 4 rines y 2 cauchos, en la orden de compra nº 2 le adquirí 2 cauchos y 4 tripas y en la orden de compra nº 3 le adquirí 4 cauchos, si yo voy a mi hoja ORDEN DE PAGO y coloco el número 1 de la orden de compra me levanta toda la información de pedro Pérez y en el detalle me va a colocar los 4 rines con dos cauchos, ahora lo que necesito es poder colocar el número de orden 2, y que debajo de los 4 rines y 2 cauchos me coloque el detalle de la orden de compra 2 y así sucesivamente con todas las ordenes que desee pagar? Otro dato importante es que puedo tener es distintas ordenes de compras un mismo artículo y en ese caso en la orden de pago me debe acumular por el articulo el monto de la sumatoria de cada orden de compra

1 respuesta

Respuesta
1

H o l a: envíame tu archivo y me explicas con ejemplos lo que necesitas.

Mi correo [email protected]

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

Hermano buenas noches te envié la información para que me ayudes, en el correo te explique lo que necesito! Gracias

Te anexo el código para buscar los datos en las hojas y ponerlos en la hoja "edición"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 100 Then Exit Sub
    Set c1 = Range("K1")
    Set c2 = Range("A5")
    Set c3 = Union(c1, c2)
    If Not Intersect(Target, c3) Is Nothing Then
        If Target.Value = "" Then Exit Sub
        If c1.Value = "" Or c2.Value = "" Then Exit Sub
        Set h1 = Sheets("EDICIÓN")
        h1.Range("A15:L115").ClearContents
        Select Case UCase(c2.Value)
            Case "ORDEN DE SERVICIO"
                Set h2 = Sheets("REPORTE OS")
                Set h3 = Sheets("DETALLE OS")
            Case "ORDEN DE COMPRA"
                Set h2 = Sheets("REPORTE OC")
                Set h3 = Sheets("DETALLE OC")
            Case "FUNCIONAMIENTO"
                Set h2 = Sheets("REPORTE NOM")
                Set h2 = Sheets("DETALLE NOM")
            Case Else
                Exit Sub
        End Select
        '
        Set b = h2.Columns("A").Find(c1, lookat:=xlWhole)
        If Not b Is Nothing Then
            h1.[K2] = h2.Cells(b.Row, "B")
            h1.[B6] = h2.Cells(b.Row, "F")
            h1.[B7] = h2.Cells(b.Row, "G")
            h1.[B8] = h2.Cells(b.Row, "I")
            h1.[B9] = h2.Cells(b.Row, "H")
            h1.[A11] = h2.Cells(b.Row, "D")
            h1.[C13] = h2.Cells(b.Row, "E")
            h1.[L118] = h2.Cells(b.Row, "C")
            '
            'busca detalle
            j = 15
            For i = 9 To h3.Range("A" & Rows.Count).End(xlUp).Row
                largo = Len(c1)
                If Val(Right(h3.Cells(i, "A"), largo)) = c1.Value Then
                      h1.Cells(j, "A") = h3.Cells(i, "C")
                      h1.Cells(j, "B") = h3.Cells(i, "D")
                      h1.Cells(j, "D") = h3.Cells(i, "E")
                      h1.Cells(j, "E") = h3.Cells(i, "F")
                      h1.Cells(j, "J") = h3.Cells(i, "G")
                      h1.Cells(j, "K") = h3.Cells(i, "H")
                      j = j + 1
                End If
            Next
        End If
    End If
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Excelente hermano, la macro me ejecuta perfectamente la ubicación de la información, tengo solo una duda, la instrucción: 

If Target.Value = "" Then Exit Sub

que función me cumple? por que si me posiciono sobre la celda K1 y le doy suprimir para limpiarla me sale un error en tiempo de ejecución y se me paraliza la macro

Borra es línea de la macro

If Target.Value = "" Then Exit Sub

Es para verificar si el dato que ingresaste es igual a "", pero como la celda la tienes combinada envía error. Entonces simplemente borra esa línea de la macro.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! ya lo hice, funciona a la perfección!!! agradezco tu tiempo y colaboración, lo único que me falta para culminar el proyecto es editar la información que ya conseguimos mediante la macro que desarrollaste, voy a crear una nueva pregunta ahora mismo para que por favor me colabores con ese ultimo detalle!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas