Página 1 de 1

Juntando 2 códigos para formar 1 só

Enviado: 16 Fev 2018 às 19:25
por Mablove
Boa tarde gente,

sou iniciante em vba e preciso de ajuda.

Tenho 2 códigos que preciso juntar e fazer 1 somente.

este código abaixo faz uma pesquisa entre datas de uma planilha e cola em outra panilha. O problema dele é que ele só pesquisa em 1 coluna.

Código: Selecionar todos
Sub Relatório()
  Application.EnableEvents = False
    ' Verifica se o valor alterado foi na célula
    'If Not Intersect([K1], Target) Is Nothing Then
        
        Dim lastRow As Long
        Dim lastResultRow As Long
        Dim X As Long
        
        ' Verifica qual a ultima célula preenchida
        lastRow = Plan1.Cells(Rows.Count, 1).End(xlUp).Row
        
        ' Apaga valores anteriores
        Plan2.Range("A2:I65536").ClearContents
        
        lastResultRow = 2 'linha resultado
        
        ' Ciclo em todas as linhas
        For X = 2 To lastRow '1 Linha dados pequisa
        
           ' verifica se o valor é igual ao da pesquisa
           If Plan1.Cells(X, 8).Value >= Plan2.[J1].Value And Plan1.Cells(X, 8) <= Plan2.[K1].Value Then '1 coluna pequisa
           
                ' Copia os valores
                Plan2.Cells(lastResultRow, 1).Value = Plan1.Cells(X, 1).Value
                Plan2.Cells(lastResultRow, 2).Value = Plan1.Cells(X, 2).Value
                Plan2.Cells(lastResultRow, 3).Value = Plan1.Cells(X, 3).Value
                Plan2.Cells(lastResultRow, 4).Value = Plan1.Cells(X, 4).Value
                Plan2.Cells(lastResultRow, 5).Value = Plan1.Cells(X, 5).Value
                Plan2.Cells(lastResultRow, 6).Value = Plan1.Cells(X, 6).Value
                Plan2.Cells(lastResultRow, 7).Value = Plan1.Cells(X, 7).Value
                Plan2.Cells(lastResultRow, 8).Value = Plan1.Cells(X, 8).Value
                Plan2.Cells(lastResultRow, 9).Value = Plan1.Cells(X, 9).Value
            
                lastResultRow = lastResultRow + 1
           End If
        Next
        
    
  '  End If
    Application.EnableEvents = True
'somaEstab

End Sub

Já esse código aqui faz a pesquisa de somente UMA DATA em toodas as planilhas que eu tiver e consigo setar várias colunas ao mesmo tempo.

Código: Selecionar todos
Private Sub CommandButton1_Click()

Dim valor As Integer
Dim c As Variant
Dim procurado As Variant
Dim result As VbMsgBoxResult
Dim i, QuantPlanilhas As Integer
QuantPlanilhas = ThisWorkbook.Worksheets.Count

                If Me.txtdatalocalizar = Empty Then
                MsgBox "Informar a data a ser pesquisada"
                Me.txtdatainicial.SetFocus
                Else
                       procurado = Me.txtLocalizar
                       
                  If IsDate(procurado) Then
                  procurado = CDate(procurado)
                  End If
  
                      For i = 1 To QuantPlanilhas Step 1
                         With Worksheets(i).Range("E:Z")
                             Set c = .Find(procurado, LookIn:=xlValues)
                            If Not c Is Nothing Then
                         Worksheets(i).Select
                         Range(c.Address).Select
                         result = MsgBox("Deseja continuar a busca?", vbYesNo, "Continuar?")
                         
                                 If result = vbNo Then
                      Exit Sub
                    End If
                End If
            End With
        Next
    End If
        
       
End Sub
Eu preciso que os 2 códigos virem somente 1, que o código resultante tenha a pesquisa entre datas mostrando os resultados em uma planilha a parte (código 1) e que a pesquisa seja feita em todas as outras planilhas, em várias colunas, como no código 2.
Tentei de várias formas mas não sei como proceder :cry:

Re: Juntando 2 códigos para formar 1 só

Enviado: 17 Fev 2018 às 10:03
por osvaldomp
É menos trabalhoso escrever um código partindo do zero do que remendar códigos existentes e tentando adivinhar o resultado desejado.
Sugiro que você disponibilize uma amostra do seu arquivo Excel com algumas linhas com dados (10 a 15 linhas), com o resultado desejado e coloque na própria planilha as explicações de como obteve o resultado.

Re: Juntando 2 códigos para formar 1 só

Enviado: 18 Fev 2018 às 15:42
por Mablove
ooi Osvaldo, vou disponibilizar, estará em anexo

Juntando 2 códigos para formar 1 só

Enviado: 18 Fev 2018 às 16:17
por Mablove
Se puder me ajudar por e-mail agradeço muito.
Mayhara.26@gmail. com
O meu trabalho nosso tudo é que minhas datas determinam meus produtos. Não está sendo fácil pra mim pois muitos exemplos dependem somente de 1 coluna com datas. eu tenho várias colunas com datas, e terei que pesquisar mensalmente datas que estão dentro de um período

Re: Juntando 2 códigos para formar 1 só

Enviado: 18 Fev 2018 às 18:19
por osvaldomp
Faltou você indicar:
1. em que células de qual planilha estarão as datas que formarão o intervalo a ser pesquisado
2. em quais colunas de quais planilhas você quer fazer a pesquisa
3. em qual planilha você quer o resultado da busca
4. quais os itens obtidos na pesquisa serão colocados no resultado (forneça exemplos)

Juntando 2 códigos para formar 1 só

Enviado: 18 Fev 2018 às 21:17
por Mablove
1.As células são infinitas, porque vai haver cadastro todos os dias. Então, a partipartir da linha 2 até chegar uma célula vazia.
2. A intenção é q a busca ocorraa em todas as planilhas, que ela seja uma busca bem geralzona. A partir da coluna que começa com O nome "3 meses" em cada planilha, e na planila 3 a que começa com "12 meses" em diante. As planilhas tem quantidades de colunas com datas diferentes.
3. quero o resultado na planilha chamada consulta
4.Os ítens são o nome da planilha (pq ai eu identifico o meu tipo de estudo), o nome do produto e a data encontrada na pesquisa ( que é a data entre duas datas distintas).

Re: Juntando 2 códigos para formar 1 só

Enviado: 19 Fev 2018 às 07:40
por osvaldomp
osvaldomp escreveu:Faltou você indicar:
1. em que células de qual planilha estarão as datas que formarão o intervalo a ser pesquisado
Mablove escreveu:1.As células são infinitas, porque vai haver cadastro todos os dias. Então, a partipartir da linha 2 até chegar uma célula vazia.
Vou alterar os termos da minha pergunta na tentativa de melhorar o entendimento:
Você diz que quer procurar uma data que esteja em um intervalo de datas, por exemplo, quer procurar datas entre 5/2/18 e 20/2/18. A pergunta é: em quais células de qual planilha você vai colocar as datas de 5/2/18 e 20/2/18 ?

Juntando 2 códigos para formar 1 só

Enviado: 20 Fev 2018 às 18:29
por Mablove
Na coluna 2 a partir da linha 2 da planilha 5 "Consulta".