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

1 Respuesta

Respuesta
1

Este ejemplo recorre las filas busca el dato deseado y copia en otra hoja los mismos.

http://www.programarexcel.com/2014/10/macro-recorre-filas-busca-copia-y-pega.html 

http://www.programarexcel.com/2013/05/macro-vba-recorre-filas-busca-y-copia.html 

http://www.programarexcel.com/2013/08/recorrer-filas-con-macro-y-contar.html 

Acá puedes ver más ejemplos 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas