none
como fazer pesquisa em varias planilhas RRS feed

  • Pergunta

  •  Eai pessoal tudo na paz?

    gostaria de uma ajudinha.

    como fazer uma pesquisa em varias planilhas, e quando digitar a primeira letra em uma textbox altomaticamente aparecer a palavra de pesquisa em uma listbox. desde ja obrigado a todos.

    sexta-feira, 22 de agosto de 2014 22:52

Todas as Respostas

  • Testa assim Anderson...

    Sub busca()
    
        Dim fAddress As String
        'Para cada planilha em todas as planilhas desta pasta de trabalho
        For Each plan In ThisWorkbook.Sheets
            'Se o valor que estiver na célula A1 da planilha atual for
            'parecido com o valor que está na caixa de texto
            fAddress = "" 'Inicio a variável em cada loop
            
            Set c = plan.Range("A1:A100").Find(textoTextBox, lookat:=xlPart) 'pesquiso o valor considerando que o intervalo seria A1:A100
            If Not c Is Nothing Then
                fAddress = c.Address
                Do
     
                    'If plan.cells(1,1).value "*" & textoTextBox & "*" Then
                    'Será adicionado o valor que está na planilha atual
                    'na célula B1 à listbox1
                    listbox1.AddItem (plan.Cells(c.Row, 2).Value)
                    'Debug.Print plan.Cells(c.Row, 2).Value & " - " & c.Address & " [" & plan.Name & "]"
                    
                    Set c = plan.Range("A1:A100").FindNext(c)
                Loop While Not c Is Nothing And fAddress <> c.Address
                
            End If
            
        Next
    
    End Sub
    


    Natan

    sábado, 23 de agosto de 2014 17:39
  • Eai Anderson e Natan tudo blz obrigado pela ajuda, tem como pesquisar apartir da linha 8 coluna C pelo(Lote), esse codigo ai não apareceu nada na listbox porque não ? da uma olhada em uma das planilhas ai.

    TOTAL DE ESTÓQUE SACOS                kgs    50            
    CAIXAS             quant 691    kgs 350      
    DESCARTE            kgs 2320   150 100 600 500 300 200 956 565 265 215 2320      
    CONGELAMENTO   cxs 300     kgs  300        
                   
      PRODUTO    AORTA FECHADA
            MATERIA PRIMA CONGELAMENTO PRODUTO ACABADO PERDAS                                                                                                                                                                        
                ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE                                                                                                                                                                        
    DATA FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO                                                                                                                                                                        
    17/08/2014 - 16:42:49 BURITI 1878 1778 145 156 150 100 300 250 150 100 300 500 200 150 2255      
    17/08/2014 - 16:44:32 FRIGONOSSA  1232 1290 256 233 300 250 150 100 656 65 65 65 65      
    17/08/2014 - 17:00:45 BURITI 1425 258      
         
           
           
           
      as planilhas são todas iguais só os nomes do produto que não            
           

     PESSOAL A PESQUISA QUE EU QUERO FAZER EU TENHO UM USERFORM, AO DIGITAR A PRIMEIRA LETRA EM UM TEXTBOX ALTOMATICAMENTE A PESQUISA APARECE EM UMA LISTBOX, TEM COMO?

    EU QUERIA TEMBEM QUE APARECESSE A PESQUISA DA COLUNA (A) ATÉ (Q) NA LISTBOX, DESDE JA OBRIGADO A TODOS E FIQUE NA PAZ.

         




    sábado, 23 de agosto de 2014 23:22
  • Anderson esta dando um erro no UsedRange o que pode ser?

    Private Sub txtpesquisa_Change()

    'O código deve ser colocado no evento Change da Caixa de Texto
     
        'Para cada planilha em todas as planilhas desta pasta de trabalho
       
        For Each plan In ThisWorkbook.Sheets
           
            'Se o valor que estiver na célula A1 da planilha atual for
           
            'parecido com o valor que está na caixa de texto
           
            'Para cada celula no preenchida na planilha atual
            For Each celula In ThisWorkbook.Sheets.UsedRange.Cells
               
                If celula.Value <> "" Then
               
                    If celula.Value Like "*" & txtpesquisa.Text & "*" Then
                       
                        'Será adicionado o valor que está na planilha atual
                       
                        'na célula atual
                       
                        ListBox1.AddItem (celula.Value)
                       
                    End If
                   
                End If
               
            Next celula
           
        Next plan
       
       
    End Sub

    domingo, 24 de agosto de 2014 00:44
  • Private Sub txtPesquisa_Change()
    'O código deve ser colocado no evento Change da Caixa de Texto
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 
                 If celula.Value <> "" Then
                 
                     If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                         
                         'Será adicionado o valor que está na planilha atual
                         
                         'na célula atual
                         
                         ListBox1.AddItem (celula.Value)
                         
                     End If
                     
                 End If
                 
             Next celula
             
         Next plan
    End Sub

    domingo, 24 de agosto de 2014 01:26
  • Testa assim Anderson...

    Sub busca()
    
        Dim fAddress As String
        'Para cada planilha em todas as planilhas desta pasta de trabalho
        For Each plan In ThisWorkbook.Sheets
            'Se o valor que estiver na célula A1 da planilha atual for
            'parecido com o valor que está na caixa de texto
            fAddress = "" 'Inicio a variável em cada loop
            
            Set c = plan.Range("A1:A100").Find(textoTextBox, lookat:=xlPart) 'pesquiso o valor considerando que o intervalo seria A1:A100
            If Not c Is Nothing Then
                fAddress = c.Address
                Do
     
                    'If plan.cells(1,1).value "*" & textoTextBox & "*" Then
                    'Será adicionado o valor que está na planilha atual
                    'na célula B1 à listbox1
                    listbox1.AddItem (plan.Cells(c.Row, 2).Value)
                    'Debug.Print plan.Cells(c.Row, 2).Value & " - " & c.Address & " [" & plan.Name & "]"
                    
                    Set c = plan.Range("A1:A100").FindNext(c)
                Loop While Not c Is Nothing And fAddress <> c.Address
                
            End If
            
        Next
    
    End Sub


    Natan

    Natan boa tarde blz, esse codigo ai aonde ele é colocado? dentro de um botão?
    domingo, 24 de agosto de 2014 19:13
  • Ademir, blz cara....

    você coloca ele dentro do form....

    e, em um commandbuttom você chama ele no evento click, por exemplo.

    Sds,


    Natan

    domingo, 24 de agosto de 2014 19:20
  • Ademir, blz cara....

    você coloca ele dentro do form....

    e, em um commandbuttom você chama ele no evento click, por exemplo.

    Sds,


    Natan

    Natan não deu certo porque sera? coloquei o codigo só dentro do form, como que eu faço para chamar no botão?
    domingo, 24 de agosto de 2014 19:51
  • Insira um botão no formulário.

    Dê um duplo clique sobre o botão.

    Você cairá no evento click do botão.

    Nesse evento, cole o código.

    domingo, 24 de agosto de 2014 20:09
  • Insira um botão no formulário.

    Dê um duplo clique sobre o botão.

    Você cairá no evento click do botão.

    Nesse evento, cole o código.

    Anderson boa tarde? eu ja coloquei o codigo dentro do botão mas quando clico no botão a listbox aparece só a barra

    de rolagen não aparece nem um testo. por que sera?

    domingo, 24 de agosto de 2014 20:25
  • Ademir,

    Vou falar sobre o meu código.

    Private Sub txtPesquisa_Change()
    'O código deve ser colocado no evento Change da Caixa de Texto
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 
                 If celula.Value <> "" Then
                 
                     If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                         
                         'Será adicionado o valor que está na planilha atual
                         
                         'na célula atual
                         
                         ListBox1.AddItem (celula.Value)
                         
                     End If
                     
                 End If
                 
             Next celula
             
         Next plan
    End Sub

    Você já testou esse código?

    O que aconteceu?

    domingo, 24 de agosto de 2014 20:37
  • Ademir,

    Vou falar sobre o meu código.

    Private Sub txtPesquisa_Change()
    'O código deve ser colocado no evento Change da Caixa de Texto
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 
                 If celula.Value <> "" Then
                 
                     If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                         
                         'Será adicionado o valor que está na planilha atual
                         
                         'na célula atual
                         
                         ListBox1.AddItem (celula.Value)
                         
                     End If
                     
                 End If
                 
             Next celula
             
         Next plan
    End Sub

    Você já testou esse código?

    O que aconteceu?

    Ele aparece  na primeira coluna da listbox os testos tudo misturado

    eu queria a pesquisa da coluna (A) ate a coluna (Q) de todas as linhas das planilhas. da uma olhada ai na plan

                

     tem como pesquisar apartir da linha 8 coluna C pelo(Lote) ate a coluna (Q)

    desde ja obrigado pela ajuda.

    TOTAL DE ESTÓQUE SACOS                kgs    50            
    CAIXAS             quant 691    kgs 350      
    DESCARTE            kgs 2320   150 100 600 500 300 200 956 565 265 215 2320      
    CONGELAMENTO   cxs 300     kgs  300        
                   
      PRODUTO    AORTA FECHADA
            MATERIA PRIMA CONGELAMENTO PRODUTO ACABADO PERDAS                                                                                                                                                                        
                ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE                                                                                                                                                                        
    DATA FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO                                                                                                                                                                        
    17/08/2014 - 16:42:49 BURITI 1878 1778 145 156 150 100 300 250 150 100 300 500 200 150 2255      
    17/08/2014 - 16:44:32 FRIGONOSSA  1232 1290 256 233 300 250 150 100 656 65 65 65 65      
    17/08/2014 - 17:00:45 BURITI 1425 258      
         

    domingo, 24 de agosto de 2014 20:50
  • Veja se melhorou:

    Private Sub txtPesquisa_Change()
    'O código deve ser colocado no evento Change da Caixa de Texto
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 If celula.Row > 7 And celula.Column > 2 Then
                    If celula.Value <> "" Then
                    
                        If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                            
                            'Será adicionado o valor que está na planilha atual
                            
                            'na célula atual
                            
                            ListBox1.AddItem (celula.Value)
                            
                        End If
                        
                    End If
                 End If
             Next celula
             
         Next plan
    End Sub

    domingo, 24 de agosto de 2014 21:03
  • Veja se melhorou:

    Private Sub txtPesquisa_Change()
    'O código deve ser colocado no evento Change da Caixa de Texto
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 If celula.Row > 7 And celula.Column > 2 Then
                    If celula.Value <> "" Then
                    
                        If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                            
                            'Será adicionado o valor que está na planilha atual
                            
                            'na célula atual
                            
                            ListBox1.AddItem (celula.Value)
                            
                        End If
                        
                    End If
                 End If
             Next celula
             
         Next plan
    End Sub

    ainda contiua aparecendo só uma coluna na listbox eu queria que aparecesse da coluna (A) até a coluna (Q)

    na listbox blz

    domingo, 24 de agosto de 2014 21:15
  • Não sei se entendi o que você quer.

    Você quer uma listbox com 17 colunas?

    domingo, 24 de agosto de 2014 21:44
  • O código que consegui montar só preenche até 10 colunas da listbox.

    Veja se serve para você.

    Private Sub txtPesquisa_Change()
    
    
    'O código deve ser colocado no evento Change da Caixa de Texto
    
    ListBox1.ColumnCount = 17
    ListBox1.ColumnWidths = "60;60;60;60;60;60;60;60;60;60;60;60;60;60;60;60;60"
      
         'Para cada planilha em todas as planilhas desta pasta de trabalho
         
         For Each plan In ThisWorkbook.Sheets
             
             'Se o valor que estiver na célula A1 da planilha atual for
             
             'parecido com o valor que está na caixa de texto
             
             'Para cada celula no preenchida na planilha atual
             For Each celula In plan.UsedRange.Cells
                 If celula.Row > 7 And celula.Column > 2 Then
                    If celula.Value <> "" Then
                    
                        If celula.Value Like "*" & txtPesquisa.Text & "*" Then
                            
                            'Será adicionado o valor que está na planilha atual
                            
                            'na célula atual
                            
                            
                            For i = 0 To 9
                            
                            If i = 0 Then
                            
                            ListBox1.AddItem (ThisWorkbook.Sheets(plan.Name).Cells(celula.Row, i + 1))
                            
                            Else
                            ListBox1.List(ListBox1.ListCount - 1, i) = ThisWorkbook.Sheets(plan.Name).Cells(celula.Row, i + 1)
                            End If
                            Next i
                            Exit Sub
                        End If
                        
                    End If
                 End If
             Next celula
             
         Next plan
    End Sub
    

    domingo, 24 de agosto de 2014 22:26
  • Anderson não deu certo esse codigo, eu tenho que apertar o delete e ele não faz pesquisa nem todas as planilhas.

    obrigado pela ajuda, mas sera que tem como fazer um botão no userform e pesquisar nas planilas e adicionar em listbox e escolher qual coluna das planilhas pesquisar? ai em inves de pesquisar em 17 colunas eu poço pesquisar em  menos colunas. essas são as colunas para pesquisas, pode ser pelo lote do produto ok? se poder me ajudar,  eu tenho 46 planilhas por isso quero fazer uma pesquisa rapida pode ser por procv em uma planilha ok? des de ja obrigado.

              ENTRADA KG SAÍDA KG ENTRADA ENTRADA SAIDA SAIDA ENTRADA ENTRADA SAIDA SAIDA DESCARTE
    FRIGORÍFICO LOTE SIF NF PREÇO SACOS SACOS CAIXAS PESO CAIXAS PESO CAIXAS PESO CAIXAS PESO
    buriti 125 2558 555 300 250 150 100 300 500 200 150 2255

    quinta-feira, 28 de agosto de 2014 00:56
  • Anderson,

    Você está excluindo uma grande quantidade de postagens, qual é o motivo disso?

    Como sou moderador, consigo ver todas que excluiu, e assim fica difícil de acompanhar o tópico. Está tendo algum problema ao postar respostas no fórum?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 5 de setembro de 2014 19:53
    Moderador