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 SubMe 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?