Olá Mariana!
Você não conseguiu aplicar o modelo na sua base completa?
No meu modelo eu não apliquei o recurso câmera, pois acredito que não seria uma solução tão fácil, uma vez que o resultado do filtro pode gerar uma lista grande. A utilização da camera utizando a função DESLOC seria boa se você estivesse trabalhando com apenas um resultado no filtro.
Por isso eu modifiquei o código baseado na sua planilha. Se você copiar a sua base para a planilha dados, o filtro vai funcionar.
Eu dei uma nova olhada aqui e vi algumas possibilidade de melhorar o código. Infelizmente não vou conseguir postar agora arquivo xlsm, mas vou postar o código para você substituir no módulo 1:
Sub Filtro()
'
' Filtro Macro
'
'
Application.ScreenUpdating = False
If Application.WorksheetFunction.CountIf(Range("C2:G2"), "") = 5 Then
Beep
MsgBox "Preencha algum critério para aplicar o filtro!", vbCritical
Exit Sub
End If
Limpar
Sheets("DADOS").Columns("A:F").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("C1:H2"), CopyToRange:=Range("C6:H6"), Unique:=False
ActiveWindow.SmallScroll Down:=-9
Trazer_Imagem
Application.ScreenUpdating = True
End Sub
Sub Limpar()
'
' Limpar Macro
'
'
Range("C7:H" & Cells(Rows.Count, "C").End(xlUp).Row + 1).Select
Selection.ClearContents
Range("C7").Select
Dim Shp As Shape
'limpar todas imagens, exceto os botões filtro e limpar
For Each Shp In ActiveSheet.Shapes
Shp.Select
If Shp.Name <> "Button 1" And Shp.Name <> "Button 2" Then
Shp.Delete
End If
Next Shp
Range("C2").Activate
End Sub
Sub Trazer_Imagem()
Dim Nome As String
Application.Goto Range("C7")
Do Until ActiveCell.Value = ""
ActiveCell.Rows("1:1").EntireRow.RowHeight = 74.25
Nome = ActiveCell.Value
Sheets("DADOS").Select
Cells.Find(What:=Nome, After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 5).Range("A1").Select
Selection.Copy
Sheets("Catálogo").Select
ActiveCell.Offset(0, 5).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(1, -5).Range("A1").Select
Loop
End Sub
Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/
Postado : 09/03/2015 8:42 am