Copiar varias Filas desde diferentes hojas y insertarlas a unan sola hoja

My buenas tardes expertos experto estén muy bien.

Mi duda es la siguiente: Tengo un archivo con varias hojas que tienen nombre de: NANICA, REPUESTOS y IPOD, son listas de precios. Lo que deseo hacer es que si a cualquiera de estas hojas se le ingresa un numero cualquiera en la columna G desde la celda G10 hasta la celda G270, la fila que contenga cualquier numero en alguna de las hojas ya mencionadas, se inserte automáticamente en otra hoja llamada PEDIDO GENERAL (Las celdas deben insertarse una debajo de la otra.

Espero me puedan ayudar he leído mucho pero no le logrado hacer este proceso.

1 Respuesta

Respuesta
2

Te mando mi solución: Tienes que copiar esta macro en cada uno de los objetos hoja de ese libro, es decir, en la hoja NANICA, REPUESTOS y IPOD.

Repito, esta macro se copia en los objeto hoja que he mencionado no en un módulo. Al final tendrás 3 eventos change en cada una de las hojas

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("g10:g270")) Is Nothing Then
Target.EntireRow.Copy Destination:=Sheets("PEDIDO GENERAL").Range("a65000").End(xlUp).Offset(1, 0)
End If
End Sub

En el momento que teclees algún número en la columna G y en el rango previsto, copiará esa fila a la hoja PEDIDO GENERAL una debajo de la otra.

Recuerda finalizar y puntuar

Hola Muy buenas tardes y que vacano una respuesta tan rápida, perola verdad no entendí muy bien, ya que la idea seria que cuando pulsara el botón de la macro que pondría en PEDIDO GENERAL, esta consultaría cada una de las hojas y traería la información hacia PEDIDO GENERAL donde se insertaría cada una de las filas que tuvieran información en la casilla G10 en adelante

Bueno ahora está mejor explicado. Cuando lo tenga preparado te lo mando

Muy buenas tardes, he logrado adelantar este código no se que piensas si voy bien, aunque au no logro hacer en la petición que tenia inicialmente.

variable = Range("a1").End(xlDown).Row 'aquí le digo cual es tu ultima fila
Range("a1", "l" & fila).Copy 'aquí copio el rango de la columna A a la l
'La cosa es que con esto copio una fila especifica no se como hacer para
'que copie solo las filas enteras que cumplan una regla en particular,
'y esta regla seria que hubiesen datos en la Columna G
Sheets("Pedido General").Select 'aquí le digo a que hoja se mueva
Range("a9").PasteSpecial 'establezco la intentar
Application.CutCopyMode = False 'quito la selección como copia
Range("a9").Select 'finalmente la posiciono en la celda a9

Ojala me pudieran ayudar.

Te mando mi solución. Dibuja un botón en la hoja PEDIDO GENERAL y adjudicale esta macro y todo listo!

Sub copiado()
For Each hoja In ActiveWorkbook.Sheets
Do While hoja.Name <> "pedido general"
hoja.Select
Range("g10").Select
Do While ActiveCell.Row <> 271
If ActiveCell.Value <> "" Then
ActiveCell.EntireRow.Copy Destination:=Sheets("pedido general").Range("a65000").End(xlUp).Offset(1, 0)
End If
ActiveCell.Offset(1, 0).Select
Loop
Loop
End Sub

recuerda finalizar y puntuar

Hola Experto, antes que nada, mil gracias por tu ayuda constante.

ahora, desafortunadamente, me saco un error que me decía For sin Next, y arregle eso, y resulta que la hoja hizo un calculo por asi decirlo interminable y me bloqueo el archivo.

No se que pasaría pero fue algo extraño, je je de todos modos es de resaltar que debo buscar los datos que tenga la columna G pero en diferentes Hojas, las hojas se llaman, NANICA, REPUESTOS, IPOD, y cualquier dato que este en la celda de la columna g coja la fila entera y la copie en la otra hoja Pedido General, obviamente una debajo de otra.

Hasta ahora tengo este código, pero solo me busca en una sola hoja y me sobre escribe las filas y tiene que poner una fila copiada debajo de la otra.

Sub Macro4()
Worksheets("NANICA").Select
variable = Range("a1").End(xlDown).Row 'aquí le digo cual es tu ultima fila
Range("a10", "l10" & fila).Copy 'aquí copio el rango de la columna A a la l
'La cosa es que con esto copio una fila especifica no se como hacer para
'que copie solo las filas enteras que cumplan una regla en particular,
'y esta regla seria que hubiesen datos en la Columna G
Worksheets("Pedido General").Select 'aquí le digo a que hoja se mueva
Range("a9").PasteSpecial 'establezco la intentar
Application.CutCopyMode = False 'quito la selección como copia
Range("a9").Select 'finalmente la posiciono en la celda a9

Mil gracias de nuevo por su ayuda, y en verdad agradezco tu atención.

La macro correcta es esta:

Sub copiado()
For Each hoja In ActiveWorkbook.Sheets
Do While hoja.Name <> "pedido general"
hoja.Select
Range("g10").Select
Do While ActiveCell.Row <> 271
If ActiveCell.Value <> "" Then
ActiveCell.EntireRow.Copy Destination:=Sheets("pedido general").Range("a65000").End(xlUp).Offset(1, 0)
End If
ActiveCell.Offset(1, 0).Select
Loop
Loop
next
End Sub

Hola experto, gracias nuevamente ustedes son super gentiles.

Pero como te decía anteriormente, ya había puesto el Next, y que pasaba la macro empezaba un ciclo interminable y bloqueaba el archivo

Tienes toda la razón, las prisas no son buenas. Esta es la macro correcta:

Sub copiado()
For Each hoja In ActiveWorkbook.Sheets
If hoja.Name <> "pedido general" Then
hoja.Select
Range("g10").Select
Do While ActiveCell.Row <> 271
If ActiveCell.Value <> "" Then
ActiveCell.EntireRow.Copy Destination:=Sheets("pedido general").Range("a65000").End(xlUp).Offset(1, 0)
End If
ActiveCell.Offset(1, 0).Select
Loop
End If
Next
End Sub

Muy buenos días Experto, de verdad que sos un mago, la macro cumple con algunas de las características de lo que busco, lo malo es que inserta un montón de filas, pero sabes creoq ue con lo que me mandaste lograre ajustar mi macro existente, en verdad me has ayudado mucho, solo tengo una duda final, me podrías explicar con que parte de la macro recorres las hojas, y con que parte recorres la columna g y que si esta tiene datos copie la fila completa esa seria mi ultima duda.

El bucle FOR EACH..........NEXT es el encargado de ir hoja por hoja

En el primer if evaluamos que el nombre de la hoja no sea "pedido general" ya que en esa hoja no tenemos que analizar nada.

Después de entrar en cada hoja se posiciona en la celda G10 y recorre esa columna hasta la fila 270 porque le hemos dicho que lo haga mientras la fila sea distinta a 271. Si la fila que está analizando tiene algún dato la copia entera a la hoja pedido general.

Recuerda finalizar y puntuar amigo.

Experto eres mi nuevo ídolo, jajaja muchas gracias hace exactamente loq ue quería le are una pequeña modificación y ya, dime como puntuar, y de una, sos muy teso mis respetos muchas gracias de verdad por tu atención y por tu tiempo.

Solo tienes que puntuar y finalizar la consulta, lo tendrás en la pantalla.

Mas que excelente, muchas gracias por todo, gente muy tesa, excelente sitio y el experto que me toco es muy atento.

Mmuchas gracias Luismondelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas