Sub impresion()
'Revisamos las celdas con un bucle (do while-loop) para ver cual
cumple con la condición
Sheets("Inventario").Select
Range("C2").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
'Si se cumple la condición se copia la fila y se pega en otra hoja
If ActiveCell.Offset(0, 15).Value = "adquirir" Or ActiveCell.Offset(0,
15).Value = "límite mínimo" Then
'Se selcciona el rango a la derecha
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
ActiveCell.Select
'va a la hoja de Lista de compra
Sheets("Lista de compra").Select
Range("a65536").Select
' Luego va a la última celda
Selection.End(xlUp).Select
' Por último se dezplaza una posición hacia abajo
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone
Exit Sub
End If
Loop
Sheets("Hoja1").Select
End Sub
Gracias de antemano
Roberto
> Tengo una hoja de cálculo que contiene informacion sobre productos de inventario
> en una columna a traves de una formula se determina si hay o no.
> Ahora bien, estoy creando un macro que verifica que productos es necesario adquirir o estan en el límite mínimo
> de manera de crear una lista para de productos necesarios.
> El problema con el macro que hice es que cuando encuentra el primer producto realiza la copia a la otra hoja y se detiene
> es decir no sigue buscando los demas artículo que cumplan con la condicion.
> Les agradeceria la ayuda. El macro que estoy utilizando es este: ...
1) la macro no continua porque tienes una instruccion "Exit Sub" ANTES de que termine su recorrido -((
2) si ya tienes un "identificador" en la columna R ("adquirir" o "limite minimo")...
por que no usas mejor un filtro avanzado y pasas a la otra hoja los datos con dichas "instrucciones" ?
3) lo unico que impide hacer una propuesta es la instruccion: -> Range(Selection, Selection.End(xlToRight)).Select
(y no creo que sea necesaria, si comentas de preferencia de cuales columnas estamos hablando y cuales son los titulos)
saludos,
hector.
__ el codigo expuesto __
Hola Hector gracias por tu interés
No creo que el error sea la instrucción end sub, toda vez que he
corrido la macro sin esta instrucción y el resultado es el mismo. En
cuanto a la instrucción: Range(Selection,
Selection.End(xlToRight)).Select simplemente copia la fila que incluye
el tipo de material, una descripción, unidades de medición y el
precio.
En tu propuesta de utilizar filtros, reconozco que me he paseado por
allí y creo que no tendría problemas pero estoy iniciandome en esto de
las macros y me gustaría poder ir desarrollando este conocimiento.
Gracias nuevamente
Yo no se como están (exactamente) tus datos, pero prueba con esta modificación de tu código,
para que sea lo más cercano posible a lo que estás haciendo:
Sub impresion()
' Revisamos las celdas con un bucle (do while-loop) para ver cual cumple con la condición
Sheets("Inventario").Select
Range("C2").Select
Do While ActiveCell.Value <> Empty
ActiveCell.Offset(1, 0).Select
' Si se cumple la condición se copia la fila y se pega en otra hoja
If ActiveCell.Offset(0, 15).Value = "adquirir" Or _
ActiveCell.Offset(0, 15).Value = "límite mínimo" Then
' Se selcciona el rango a la derecha
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
' va a la hoja de Lista de compra
Sheets("Lista de compra").Select
Range("a65536").End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone
End If
Sheets("Inventario").Select
Loop
'Sheets("Hoja1").Select
End Sub
Saludos: Antonio.
**********************
Antonio y Hector, muchas gracias por su ayuda, el código presentado
funciona correctamente.
Muy amables
Roberto