Notifications
Clear all

FILTRO AVANÇADO - Ajuda

42 Posts
2 Usuários
0 Reactions
17.4 K Visualizações
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Olá pessoal, venho pedir vossa ajuda novamente!

Tenho uma planilha de banco de dados com o nome MOVCAIXA2 e preciso criar um filtro de pesquisa avançada em outra planilha.

Os filtros que preciso são: Ano Exercício, Nº OP e Transação de Origem.

Neste tópico o assunto é muito semelhante ao meu, porem não consegui aplicar a solução de lá em meu problema. Lá é para apenas 1 filtro, eu preciso de 3.

É possivel usar a mesma lógica da planilha disponibilizada lá para meu propósito?
É possivel, por exemplo, colocar o ano de exercício 2002 e a planilha buscar todos os registros de 2002, ou colocar Nº OP 500 e ele busca todas as OPs 500 de todos os anos, ou ainda Ano 2002, OP 500, Transação de Origem OPB e ele busca exatamente este registro?

Gostaria de aprender como fazer este filtro avançado para mais adiante acrescentar um período de datas, CPF/CNPJ etc.

Obrigado!

 
Postado : 27/03/2012 1:14 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!
Esta é um versão mais limpa.

Faça teste.

Sub NovaVersao()
    Dim LR As Long
    Rows(6).Resize(100).Delete
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" Then AleVBA = 1
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" Then AleVBA = 2
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" Then AleVBA = 3
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" Then AleVBA = 4
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" Then AleVBA = 5
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" Then AleVBA = 6
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" Then AleVBA = 7
    
Select Case AleVBA
Case 1


    With Sheets("A2002").UsedRange
        .AutoFilter Field:=3, Criteria1:=Range("b2")
        .AutoFilter Field:=11, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
   
Case 2
    With Sheets("A2002").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=11, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 3
     With Sheets("A2002").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=3, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With
    
Case 4
     With Sheets("A2002").UsedRange
        .AutoFilter Field:=11, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
    
Case 5
    
     With Sheets("test").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .Copy Range("a6")
        .AutoFilter
    End With
    
Case 6

     With Sheets("A2002").UsedRange
        .AutoFilter Field:=3, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With
    
Case Else

   With Sheets("A2002").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=3, Criteria1:=Range("b2")
        .AutoFilter Field:=11, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With

End Select
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 28/03/2012 5:48 pm
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Boa noite!!
Esta é um versão mais limpa.
Faça teste.

Boma dia cara!

Testei aqui e rodou beleza!!! hehehe

Adicionei um novo filtro, o código ficou assim:

Sub NovaVersao()
    Dim LR As Long
    Rows(6).Resize(100).Delete

    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") = "" Then AleVBA = 1
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" Then AleVBA = 2
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" Then AleVBA = 3
    If Range("a2") = "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" Then AleVBA = 4

    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" Then AleVBA = 5
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" Then AleVBA = 6
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" Then AleVBA = 7
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" Then AleVBA = 8
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" Then AleVBA = 9
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" Then AleVBA = 10

    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" Then AleVBA = 11
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" Then AleVBA = 12
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" Then AleVBA = 13
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" Then AleVBA = 14

    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" Then AleVBA = 15

    
Select Case AleVBA

Case 1
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .Copy Range("a6")
        .AutoFilter
    End With
  
 
Case 2
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With


Case 3
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
 
Case 4
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With
   
Case 5
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With
   
 
Case 6
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
    

Case 7
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 8
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
  

Case 9
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 10
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 11
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 12
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 13
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 14
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case Else
   With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

End Select
End Sub

Segue também o código que estou usando no botão "Limpar":


Sub LimpaResultados()
        Dim sRange As Range
        Dim sRowConsulta As Long
        Dim FinalRow As Long
           
        FinalRow = Range("A65536").End(xlUp).Row
           
        sRowConsulta = 7
           
        Set sRange = Range("A" & sRowConsulta & ":A" & FinalRow)
            
            If Range("A" & sRowConsulta).Value = "" Then
                Exit Sub
            End If
                
            sRange.EntireRow.ClearContents
            
            Range("A2").ClearContents
            Range("B2").ClearContents
            Range("C2").ClearContents
            Range("D2").ClearContents
            
End Sub

Os códigos estão bons?

Se eu for implementar o critério "DATA INICIAL" e "DATA FINAL" como ficaria o código?

 
Postado : 29/03/2012 6:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!!

Será realmente necessário???

Você terá que acrescentar na primeira parte código. Mais 2 condições IF

If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" Then AleVBA = 15

, no caso 16 e 17.

E embaixo é continuar a logica, mas terá mais condições, para a segurar que não terá algum tipo de erro, na analise feito pelo código.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 7:00 am
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Encontrei um bom exemplo que busca entre datas, porem o código cria uma planilha nova.

como posso adequar parte do código abaixo em meu código principal?

Gostaria que fosse como nos outros filtros, se colocar somente data inicial a planilha busca tudo acima da data....

O campo da Data inicial é B4 e o campo da data final é D4.

Poderia dar mais essa forcinha???? heheh

Sub FiltroEntreDatas()

If Range("b2").Value = Empty Or Range("b4").Value = Empty Then
  MsgBox "Preencha os campos Data Incial e Data Final para realizar o filtro.", vbCritical, "Atenção"
   Exit Sub
Else

i = Worksheets("plan1").UsedRange.Rows.Count + 1

    Range("e7:e" & i).FormulaR1C1 = "=IF(AND(RC[-3]>=R2C2,RC[-3]<=R4C2),""Sim"",""Não"")"
    ActiveSheet.Range("$E$6:E" & i).AutoFilter field:=1, Criteria1:="Sim"
final:
   
   Range("b6:d" & i).Select
   Selection.Copy
   
   Application.Workbooks.Add (1)
   Range("a2").Select
   ActiveSheet.Paste
   Columns("a:a").ColumnWidth = 12
   Columns("b:b").ColumnWidth = 30
   Columns("c:c").ColumnWidth = 13
   Application.CutCopyMode = False
   
   Range("b1").Value = "Total: "
   Range("c1").FormulaR1C1 = "=SUM(R[2]C:R[199]C)"
   Range("c1").Select
   
   MsgBox "Relatorio criado com sucesso."
 End If
   
End Sub
 
Postado : 29/03/2012 9:30 am
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Olá...

Tentei fazer um teste mas sem sucesso!

Acrescentei:

    If Range("a2") = "" And Range("b2") = "" And Range("c2") = "" And Range("d2") = "" And Range("c3") <> "" Then AleVBA = 16

Sendo a data inserida em C3 para testes

Acrescentei o case

Case 16
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=24, Criteria1:="<=" & CLng(CDate(c3))
        .Copy Range("a6")
        .AutoFilter
    End With

Mas não estou conseguindo nada. Este critério eu busquei na internet mesmo... nem sei se ele funciona.

 
Postado : 29/03/2012 11:21 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente..

Sub Ultimate() 
    Dim LR As Long 
    Rows(6).Resize(100).Delete 
     
    Select Case True 
    Case Range("A2").Value = "" And Range("B2").Value <> "" And Range("C2").Value <> "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=3, Criteria1:=Range("B2").Value 
            .AutoFilter Field:=11, Criteria1:=Range("C2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value <> "" And Range("B2") = "" And Range("C2").Value <> "" And _ 
        Range("B4").Value <> "" And Range("D4").Value 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=24, _ 
            Criteria1:=">=" & Format(Range("B4").Value, Sheets("A2002").Range("X2").NumberFormat), _ 
            Operator:=xlAnd, _ 
            Criteria2:="<=" & Format(Range("D4").Value, Sheets("A2002").Range("X2").NumberFormat) 
            .AutoFilter Field:=1, Criteria1:=Range("A2").Value 
            .AutoFilter Field:=11, Criteria1:=Range("C2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value <> "" And Range("B2").Value <> "" And Range("C2").Value = "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=1, Criteria1:=Range("A2").Value 
            .AutoFilter Field:=3, Criteria1:=Range("B2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value = "" And Range("B2").Value = "" And Range("C2").Value <> "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=11, Criteria1:=Range("C2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value <> "" And Range("B2").Value = "" And Range("C2").Value = "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=1, Criteria1:=Range("A2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value = "" And Range("B2").Value <> "" And Range("C2").Value = "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=3, Criteria1:=Range("B2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
         
    Case Range("A2").Value <> "" And Range("B2").Value <> "" And Range("C2").Value <> "" 
         
        With Sheets("A2002").UsedRange 
            .AutoFilter Field:=1, Criteria1:=Range("A2").Value 
            .AutoFilter Field:=3, Criteria1:=Range("B2").Value 
            .AutoFilter Field:=11, Criteria1:=Range("C2").Value 
            .Copy Range("A6") 
            .AutoFilter 
        End With 
    End Select 
End Sub 

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 11:48 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tentando contribuir, espero que lhe ajude
Veja no anexo.
Veja que coloquei como exemplo em d2 uma data e em d3 o operador para essa data (>, >=,<,<=,= ou em branco)
Para cd criterio de filtro, basta deixa-lo em branco ou preencher com o dado buscado, cuidando para que a instrução if esteja OK
tb alterei o metodo para a range do filtro, pois nao sou muito (aqui é um conceito pessoal) chegado ao usedRange, que na maioria das vezes e muito maior do que a range realmente utilizada, e pode deixar mais lento o codigo.

Sub FiltroAle()
Dim lastColum, lastRow As Long
        lastRow = Sheets("A2002").Cells(Cells.Rows.Count, "A").End(xlUp).Row
        lastColum = Sheets("A2002").Cells(lastRow, Cells.Columns.Count).End(xlToLeft).Address

Sheets("Lancamento").Rows(6).Resize(1000).Delete
    If Range("a2").Value <> "" Then
        d1 = Range("a2").Value
    Else
        d1 = "<>""" '">0"
    End If
    If Range("b2").Value <> "" Then
        d2 = Range("b2").Value
    Else
        d2 = "<>""" '">0"
    End If
    If Range("c2").Value <> "" Then
        d3 = Range("c2").Value
    Else
        d3 = "<>""" '">0"
    End If
    If Range("d2").Value <> "" Then
        d4 = Format(Range("D2"), "m/dd/yyyy")
        d41 = Range("D3")
    Else
        d4 = "<>""" '">0"
    End If

With Sheets("A2002").Range("A1:" & lastColum) 'UsedRange        
    .AutoFilter Field:=1, Criteria1:=d1 'Range("a2")
    .AutoFilter Field:=3, Criteria1:=d2 'Range("b2")
    .AutoFilter Field:=11, Criteria1:=d3 'Range("c2")
    .AutoFilter Field:=24, Criteria1:=d41 & d4 'Range("c2")
    .Copy Range("a6")
    .AutoFilter
    End With
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 12:38 pm
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Obrigado Alexandre e Reinaldo!

Não consegui resultados bons com as últimas indicações, porem utilizei algumas partes para incrementar o código original e ficou assim:

Sub NovaVersao()
    Dim LR As Long
    Rows(6).Resize(100).Delete

    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 1
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 2
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 3
    If Range("a2") = "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 4
    If Range("a2") = "" And Range("b2") = "" And Range("c2") = "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 5


    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 6
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 7
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 8
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 9
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 10
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 11
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 12
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 13
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 14
    If Range("a2") = "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 15


    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") = "" Then fjpVBA = 16
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 17
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 18
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 19
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 20
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 21
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 22
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 23
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 24
    If Range("a2") = "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 25
 

    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") = "" Then fjpVBA = 26
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") = "" And Range("e2") <> "" Then fjpVBA = 27
    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") = "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 28
    If Range("a2") <> "" And Range("b2") = "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 29
    If Range("a2") = "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 30

    If Range("a2") <> "" And Range("b2") <> "" And Range("c2") <> "" And Range("d2") <> "" And Range("e2") <> "" Then fjpVBA = 31

    
Select Case fjpVBA

Case 1
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .Copy Range("a6")
        .AutoFilter
    End With
  
 
Case 2
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With


Case 3
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With
 
Case 4
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With
   
Case 5
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With
   
 
Case 6
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .Copy Range("a6")
        .AutoFilter
    End With
    

Case 7
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 8
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With
  

Case 9
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 10
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 11
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 12
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 13
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
        .Copy Range("a6")
        .AutoFilter
    End With

Case 14
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 15
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 16
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .Copy Range("a6")
        .AutoFilter
    End With

Case 17
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .Copy Range("a6")
        .AutoFilter
    End With

Case 18
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 19
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .Copy Range("a6")
        .AutoFilter
    End With

Case 20
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 21
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 22
    With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .Copy Range("a6")
        .AutoFilter
    End With

Case 23
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 24
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 25
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 26
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .Copy Range("a6")
        .AutoFilter
    End With

Case 27
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 28
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 29
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=1, Criteria1:=Range("a2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

Case 30
    With Sheets("MOVCAIXA").UsedRange
    .AutoFilter Field:=4, Criteria1:=Range("b2")
    .AutoFilter Field:=8, Criteria1:=Range("c2")
    .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With


Case Else
   With Sheets("MOVCAIXA").UsedRange
        .AutoFilter Field:=1, Criteria1:=Range("a2")
        .AutoFilter Field:=4, Criteria1:=Range("b2")
        .AutoFilter Field:=8, Criteria1:=Range("c2")
        .AutoFilter Field:=21, Criteria1:=Range("d2")
    .AutoFilter Field:=24, Criteria1:=">=" & Format(Range("e2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat), Operator:=xlAnd, Criteria2:="<=" & Format(Range("f2").Value, Sheets("MOVCAIXA").Range("X2").NumberFormat)
        .Copy Range("a6")
        .AutoFilter
    End With

End Select
End Sub

Percebi que se tento fazer uma pesquisa em cima de pesquisa a planilha busca dados errados, para contornar isso sempre tenho que clicar em "Limpar" para recomeçar a pesquisa, ai não da erro.

O código está OK?

 
Postado : 29/03/2012 3:03 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Consegue dizer o que houve de errado com minha rotina?

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 3:09 pm
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Boa noite!!

Consegue dizer o que houve de errado com minha rotina?

Att

Acredito fielmente que ela está perfeita, sem erros, acho que ela não encaixou bem porque já alterei muita coisa na planilha original ai teria que adequar sua rotina na planilha, ai como não entendo muito de programação tomaria uma surra. hehehe

Segue anexa a planilha atual para você ver como ficou.

T+ boa noite!

 
Postado : 29/03/2012 3:24 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!
Eu i seu arquivo, achei bem legal!!

Mas você ainda vai precisar de mais alguma coisa, não se esqueça de marcar seu tópico como resolvido!!

Abraços e At++++ ;)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 7:12 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Só para contribuir, apesar de fugir do modelo do arquivo da Dany.

De uma olhada tambem nos exemplos postados na comunidade do orkut utilizando auto-filtro, são ótimos exemplos:
http://www.orkut.com.br/CommMsgs?cmm=96 ... essionaria

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/03/2012 8:05 pm
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Só para contribuir, apesar de fugir do modelo do arquivo da Dany.

De uma olhada tambem nos exemplos postados na comunidade do orkut utilizando auto-filtro, são ótimos exemplos:
http://www.orkut.com.br/CommMsgs?cmm=96 ... essionaria

[]s

Caramba!!!

Muito bacana o exemplo da planilha do Eduardo, porem já tentei de tudo aqui, não consigo "reproduzir" o que ele fez em minha planilha, já tentei copiar os códigos, botões etc. mas não dá!!! hehehe

Vou continuar tentando aqui, pretendo aplicar diretamente na planilha "MOVCAIXCA".

De qualquer forma, obrigado pela contribuição. :)

 
Postado : 30/03/2012 7:52 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Dany, aqui no serviço, não temos o excel 2007 e não é habilitado para acessar alguns sites e o orkut é um deles, então mais tarde dou uma olhada e vejo se consigo fazer a adaptação que pretende.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 30/03/2012 8:42 am
(@danyahoo)
Posts: 49
Eminent Member
Topic starter
 

Dany, aqui no serviço, não temos o excel 2007 e não é habilitado para acessar alguns sites e o orkut é um deles, então mais tarde dou uma olhada e vejo se consigo fazer a adaptação que pretende.
[]s

Só para adiantar...

Aqui também não abre, ai ontem eu mandei para meu e-mail para mexer nela hj...

 
Postado : 30/03/2012 9:08 am
Página 2 / 3