Página 1 de 1

PESQ. MULTICRITÉRIO S RETORNO- RETORNANDO SÓ CADASTRO ANTIGO

Enviado: 11 Abr 2018 às 07:42
por AMORIM123
Bom dia

Tenho como rotina do "frm_consulta" uma pesquisa multicritério na sheets("Dados"), que deverá ser feita com uns de seus txtbox preenchidos (txt_empresa, txt_periodo a txt_periodo1, txt_mva a txt_mva1); a pesquisa feita na sheets ("dados") deve ser levada para a sheets("Estoque") de onde alimentará o listbox1... toda essa rotina está associada ao evento click do btn_pesquisar do frm_consulta.

Porém, só está sendo transportado os 3 primeiros dados que eram dados já existentes antes de realizar a compilação do código; preciso que sempre que fosse feito a inserção de novos dados na sheets("Dados") e o btn_pesquisar do frm_consulta fosse ativada essa pesquisa, realizada com os novos dados cadastrados anteriormente.

babdallas no fórum: viewtopic.php?f=12&t=6618&p=31805#p31805 anteriormente ajudou a implementar está rotina de pesquisa, porém, quando baixei a implementação que fizeste em meu código, o teste que fiz, o fiz com os cadastros que já haviam (os três primeiros), todavia conforme vou alimentando a sheets("dados") com o "frm_estoque" o filtro não é mais realizado para todos os itens, isto é, está funcionando apenas para os registros que já haviam. :(

Alguém puder contribuir! pois não consegui fazer nada que corrigisse ó cód. para rodar após a inserção de novos dados.


Código: Selecionar todos
Private Sub btn_pesquisar_Click()


Dim lindados As Integer
Dim linestoque As Integer
Dim lngUltLin As Long
Dim vrtMvaInf As Variant, vrtMvaSup As Variant, vrtPerInf As Variant, vrtPerSup As Variant

Application.ScreenUpdating = False

On Error GoTo Erro
lindados = 2
linestoque = 2

With wshEstoque
    lngUltLin = .Cells(.Rows.Count, 1).End(xlUp).Row
    If lngUltLin >= linestoque Then .Range(.Cells(linestoque, 1), .Cells(lngUltLin, 11)).ClearContents
End With

vrtPerInf = CDate(IIf(txt_periodo.Value = "", 0, txt_periodo.Value))
vrtPerSup = CDate(IIf(txt_periodo1.Value = "", 1000000, txt_periodo1.Value))
vrtMvaInf = IIf(txt_mva.Value = "", -1E+20, txt_mva.Value) / 100
vrtMvaSup = IIf(txt_mva1.Value = "", 1E+20, txt_mva1.Value) / 100

With wshDados
    Do Until .Cells(lindados, 2).Value2 = ""
        If UCase(.Cells(lindados, 3).Value2) Like "*" & UCase(txt_empresa.Value) & "*" And _
        .Cells(lindados, 2).Value2 >= vrtPerInf And _
        .Cells(lindados, 2).Value2 <= vrtPerSup And _
        .Cells(lindados, 8).Value2 >= CDbl(vrtMvaInf) And _
        .Cells(lindados, 8).Value2 <= CDbl(vrtMvaSup) Then
            For intCol = 1 To 11
                wshEstoque.Cells(linestoque, intCol) = .Cells(lindados, intCol)
            Next intCol
        
            linestoque = linestoque + 1
        End If
        
        lindados = lindados + 1
    Loop
    wshEstoque.Activate
End With


Call carregarlistbox



Application.ScreenUpdating = True

Erro:
Application.ScreenUpdating = True
End 



Em anexo planilha

Muito obrigado!

Re: PESQ. MULTICRITÉRIO S RETORNO- RETORNANDO SÓ CADASTRO AN

Enviado: 16 Abr 2018 às 16:11
por babdallas
O percentual estava como texto. Mudei isso na macro de gravar dados e agora está funcionando.

PESQ. MULTICRITÉRIO S RETORNO- RETORNANDO SÓ CADASTRO ANTIGO

Enviado: 17 Abr 2018 às 12:58
por AMORIM123
babdallas ..

não tinha percebido também :mrgreen:

Para minha necessidade neste cálculo deixei assim:
Código: Selecionar todos
sv1 = CDbl(.Cells(lngUltLinDados + 1, 6).Value2) + CDbl(.Cells(lngUltLinDados + 1, 7).Value2)
        sv2 = CDbl(.Cells(lngUltLinDados + 1, 4).Value2) + CDbl(.Cells(lngUltLinDados + 1, 5).Value2)
        resultado = (sv1 - sv2) / .Cells(lngUltLinDados + 1, 7).Value2
        
        .Cells(lngUltLinDados + 1, 8).Value = resultado
        .Cells(lngUltLinDados + 1, 8).NumberFormat = "0.00%"
Ficou ótimo, meu filtro para sheets("esotque") está rodando legal, porém o txt_resultado.Value não exibi mas em formato "0.00%"
Código: Selecionar todos
 txt_resultado.Value = .Cells(lngUltLinDados + 1, 8).Value
        
               
        MsgBox ("Resultado MVA% = " & .Cells(lngUltLinDados + 1, 8).Value & " , STATUS: " & .Cells(lngUltLinDados + 1, 9).Value & "")

Re: PESQ. MULTICRITÉRIO S RETORNO- RETORNANDO SÓ CADASTRO AN

Enviado: 17 Abr 2018 às 13:18
por babdallas
Tente assim
Código: Selecionar todos
txt_resultado.Value = format(.Cells(lngUltLinDados + 1, 8).Value, "#.#0%")

PESQ. MULTICRITÉRIO S RETORNO- RETORNANDO SÓ CADASTRO ANTIGO

Enviado: 17 Abr 2018 às 13:40
por AMORIM123
babdallas ..estudar essas fomatações
te devo mais essa cara...vou colocar uma dedicatória no código referente a essas ajudas que me deu :mrgreen:
vlwzão