salve
il problema è tutto in questa riga:
Set area = Range("AI6", Range("IA6").End(xlDown)).SpecialCells(xlCellTypeVisible)
Infatti con l'istruzione End si estende la selezione dalla cella di partenza fino all'ultima cella occupata.
Nel tuo caso da AI6 a IA62 non ci sono valori quindi l'area definita risulterà AI6:IA62
in questi casi l'uso dell'istruzione End non va bene. Per risolvere il problema, devi intercettare l'ultima riga occupata dalla tabella e definire la tua area.
Immagino che la colonna che rappresenti la lunghezza totale della tabella sia la colonna A
quindi con :
Uriga = Range("A" & Rows.Count).End(xlUp).Row
trovi l'ultima riga della tabella
e con :
Set area = Range("AI6", Range("IA" & Uriga)).SpecialCells(xlCellTypeVisible)
definisci l'area da copiare.
Il tuo codice completo sarà:
Sub filtra_copia1()
Range("C3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1", Range("$IB$1").End(xlDown)).AutoFilter Field:=3, Criteria1:=Range("C5").Value, _
Operator:=xlAnd
Uriga = Range("A" & Rows.Count).End(xlUp).Row
Set area = Range("AI6", Range("IA" & Uriga)).SpecialCells(xlCellTypeVisible)
area.Copy Destination:=Sheets("Modulo").Range("b2")
Set area = Nothing
End Sub
saluti
Giap