Tengo un libro con 20 hojas cada una con un nombre, en la primera hoja la llamo "pedidos" y las restantes hojas las identifico con un numero 01 - 05 - ... 20 representan a familias de artículos no se como hacer una macro en la hoja "pedidos"que según el valor celda ("c5"),"c10"), ("c12"), primero vaya a la hoja valor ("c5")y en esa hoja filtre unos datos según los dos criterios ("c10" ) ("c12") donde selecciono un rango para copiar en la hoja"pedidos" en la posición inicial de ("g2") si esta vacía, si no en la siguiente en order descendiente ("g3")
Te acabo de enviar el archivo de ejemplo que armé de acuerdo a lo que entendí, si está mal por favor me envías el tuyo a vuelta de correo para corregir lo necesario. Si está todo OK o contribuye en un buen porcentaje a la solución definitiva favor calificar la respuesta de acuerdo a la calidad de la misma. Cordialmente, cmera
En el Editor, deberás insertar un módulo y copiar estas 2 rutinas. Fíjate los comentarios para encontrar las líneas donde deberás ajustar a tus referencias La primera encuentra la primer fila libre en la col G de la hoja Pedidos La segunda aplica filtros en las hojas siguientes según los criterios ingresados en C10 y C12. Supuse que los criterios corresponden a las columnas 1 y 2 (ajustar) y empiezan en la fila 3. Debes dejar la fila 2 libre ( títulos en la 1) Si te presenta alguna dificultad solicítame el libro con el ejemplo a mi correo (ver nota al pie) Sub FilaLibre1() ' Macro grabada el 06/05/2005 por Elsamatilde 'se recorre una col a partir de la celda activa Sheets("Pedidos").Select ActiveSheet.Range("G2").Select While ActiveCell.Value <> "" 'se pasa a la fila siguiente ActiveCell.Offset(1, 0).Select 'se repite el ciclo Wend filalibre = ActiveCell.Row End Sub Sub FiltroAvanzado() ' Macro grabada el 06/05/2005 por Elsamatilde Dim miHoja As String, crit1 As String, crit2 As String, Unacelda As String Dim celdas As String, dire As String, ulti As String Dim dosptos, coma As Byte 'buscar celda vacía FilaLibre1 miHoja = (Sheets("Pedidos").Range("C5")) crit1 = Sheets("Pedidos").Range("C10") crit2 = Sheets("Pedidos").Range("C12") 'seleccionar una celda de la base a filtrar On Error GoTo NoHoja Sheets(miHoja).Select ActiveSheet.Range("A2").Select 'se establece Autofiltro Selection.AutoFilter 'se filtra la columna 1 y 2 por los criterios guardados Selection.AutoFilter Field:=1, Criteria1:=crit1 Selection.AutoFilter Field:=2, Criteria1:=crit2 'Indicar una celda de la base filtrada: Unacelda = "A2" 'Copiado de celdas visibles Range(Unacelda).CurrentRegion.SpecialCells(xlCellTypeVisible).Select celdas = Selection.Address ulti = Right(celdas, 3) 'se ubica la última fila y posición de la primer coma If InStr(1, ulti, "$") = 1 Then ulti = Right(ulti, 2) Else ulti = Right(ulti, 1) End If coma = InStr(1, celdas, ",") 'se ubica la posición del primer dospuntos a partir de la posición de la coma On Error Resume Next dosptos = InStr(coma, celdas, ":") 'se guarda la dirección que se encuentra a partir de la primer coma y antes del 2 puntos dire = Mid(celdas, coma + 1, dosptos - (coma + 1)) dire = Range(dire).Address(False, False) Range(dire & ":C" & ulti).SpecialCells(xlCellTypeVisible).Copy ' Establecer libro, hoja y rango de destino Sheets("Pedidos").Activate Cells(filalibre, 7).Select 'pegado de valores Selection.PasteSpecial Paste:=xlValues 'Pegado de formatos Selection.PasteSpecial Paste:=xlFormats 'quitar filtros Sheets(miHoja).Range("A1").AutoFilter Exit Sub NoHoja: MsgBox "No se encuentra hoja con ese número" End Sub Saludos Elsa *** No te pierdas el Manual con las 300 Macros explicadas en español. Descarga la Demo gratis desde: http://es.geocities.com/lacibelesdepunilla/manual