EXCEL - Aplicar Filtro y, a continuación, una macro definida
Los expertos. Tengo una nueva consulta sobre VBA; espero que podáis iluminarme :)
Tengo una hoja en la que recopilo todos los datos de unos pedidos (cantidades, proveedor, precio, fechas,...). Los encabezados se encuentran en la línea 9.
Mediante la siguiente macro, genero dentro del mismo archivo una hoja independiente para cada proveedor (dato en la columna K) y funciona perfectamente:
Sub CrearyCopiarPedidoProv() Application.ScreenUpdating = False Set h1 = Hoja1 For i = 10 To h1.Range("K" & Rows.Count).End(xlUp).Row If h1.Cells(i, "K") <> "" Then existe = False For Each h2 In Sheets If h2.Name = h1.Cells(i, "K") Then existe = True Exit For End If Next If existe Then u = h2.Range("K" & Rows.Count).End(xlUp).Row + 1 h1.Rows(i).Copy h2.Rows(u) h2.Range("AA:AJ").Columns.Delete Else Set h3 = Sheets.Add(after:=Sheets(Sheets.Count)) Hoja = h1.Cells(i, "A") h3.Name = h1.Cells(i, "K") h1.Rows(9).Copy h3.Range("A1") h1.Rows(i).Copy h3.Rows(2) h3.Range("AA:AJ").Columns.Delete Cells.Select Cells.EntireColumn.AutoFit Cells.EntireRow.AutoFit End If End If Next MsgBox ("Plan proveedor generado") End Sub
Me gustaría hacer una evolución en el fichero pero no consigo que funcione.
Quiero que ANTES de aplicar la macro descrita se apliquen dos filtros de fechas a las columnas C (Fecha Inicio) y D (Fecha Fin), y que la macro se ejecute sólo para las líneas visibles.
Los filtros los aplico en función de la casilla C2 con el código siguiente:
Fecha Inico (col C) <= C2 o vacío
Fecha Fin (col D) >= C2 o vacío
Sub filtrar_fechas() Dim lFecha1 As Long lFecha1 = Range("celFecha") With ActiveSheet If .AutoFilterMode = True Then .AutoFilterMode = False End With Range("A9").AutoFilter field:=3, Criteria1:="<=" & lFecha1, _ Operator:=xlOr, Criteria2:="=" Range("A9").AutoFilter field:=4, Criteria1:=">=" & lFecha1, _ Operator:=xlOr, Criteria2:="=" End Sub
¿Cómo podría hacer para que la primera macro me tome en cuenta únicamente las líneas filtradas?