Copiar datos de una hoja a otra según varios criterios
Y salud para todos.
Con las siguientes secuencias se realiza el volcado en la hoja Facturas de los datos tomados de la hoja Pedidos, y considerando que cada Factura contiene sólo un producto. Ahora se me presenta el problema de que en cada pedido puede haber hasta 4 productos diferentes. Por ello desearía me ayudarais a modificar dichas secuencias para que en cada Factura pudiera incluir todos los productos del pedido. Muy agradecido y saludos
Dim fila As Long
'x Elsamatilde
Private Sub Worksheet_Activate()
'si x = 1 es xq se está volviendo de Pedidos luego del filtrado y no debe volver a ejecutar
If x = 1 Then Exit Sub
'llena lista total de facturas
INVOICES.ListFillRange = "Pedidos!I2:I" & Sheets("Pedidos").Range("I" & Rows.Count).End(xlUp).Row
INVOICES.ListIndex = -1
'prepara hoja Pedidos para filtrar pendientes
x = 1
Call filtraPendientes
'llena lista con pendientes si los hay, sino deja el combo vacio
INVOICES_Pend.ListFillRange = ""
If Sheets("Pedidos").Range("AC2") <> "" Then
INVOICES_Pend.ListFillRange = "Pedidos!AC2:AD" & Sheets("Pedidos").Range("AC" & Rows.Count).End(xlUp).Row
INVOICES_Pend.ListIndex = -1
End If
x = 0
End Sub
Private Sub INVOICES_Change() 'selección en TODAS las Facturas
'para que no se ejecute mientras se llena el combo
If INVOICES.ListIndex = -1 Then Exit Sub
'al seleccionar un elemento en este combo, debe mostrarse vacío el otro
INVOICES_Pend.ListIndex = -1
fila = INVOICES.ListIndex + 2
Call llenaFactura
End Sub
Private Sub INVOICES_Pend_Change() 'selección en Pendientes
If INVOICES_Pend.ListIndex = -1 Or x = 1 Then Exit Sub
'al seleccionar un elemento en este combo, debe mostrarse vacío el otro
INVOICES.ListIndex = -1
'la fila la da la 2da col del combo
fila = INVOICES_Pend.List(INVOICES_Pend.ListIndex, 1)
Call llenaFactura
End Sub
Sub llenaFactura()
Range("H13,B21,A13,A14,A25,F25,G33,G25,H31,B40").Value = Empty
'Nº Factura
Range("H13") = Sheets("Pedidos").Range("I" & fila)
'orden
Range("B21") = Sheets("Pedidos").Range("B" & fila)
'envio a:
Range("A13") = Sheets("Pedidos").Range("K" & fila)
'direccion a:
Range("A14") = Sheets("Pedidos").Range("L" & fila)
'descripción
Range("A25") = Sheets("Pedidos").Range("F" & fila)
'cantidad
Range("F25") = Sheets("Pedidos").Range("M" & fila)
'precio unidad
Range("G25") = Sheets("Pedidos").Range("Q" & fila)
'descuento
Range("H31") = Sheets("Pedidos").Range("S" & fila)
End Sub