Página 1 de 1
Código em VBA para filtragem de vários critérios
Enviado: 22 Set 2018 às 15:05
por Bmcs
Boa Tarde
Estou a desenvolver um trabalho em excel de leitura de artigos/stock.
Neste momento tenho algumas problemáticas que não consigo resolver (mesmo após horas e horas de youtube e pesquisas). Em anexo envio um ficheiro de teste.
Neste momento tenho um código que utilizei de um template retirado da internet e trabalhei-o de acordo com o que necessito.
Passo a explicar:
- O que necessito?
- Preciso de realizar uma pesquisa e que essa pesquisa me retorne resultados de acordo com a pesquisa.
- O que está feito?
- Já tenho o user form criado e a funcionar como podem ver pelo ficheiro de teste.
- Problemas.
1- Preciso de separar a base de informação para uma sheet e o userform para outra, como podem ver, tenho tudo junto na mesma sheet.
2- Quando abro o user form e faço uma pesquisa, quando seleciono um artigo, o excel faz uma seleção igual no lista de informação. Gostava de remover isso.
3- O mais importante. Como podem ver, tenho 3 botões logo no início. Preciso que esses botões façam uma filtragem de informação antes de eu realizar a pesquisa. Exemplo:
Ao clicar em "CAPA", e logo de seguida pesquisar "CARRO", apenas me aparecer a informação que contenha "capa".
4- Há alguma forma de criar essa filtragem com várias condicionantes? Por exemplo, filtro para várias variantes da mesma palavra (CAPA, C4P4, CAP4, etc).
EDIT: Para aceder ao userform, é preciso clicar no icon por baixo de "BASE DE DADOS".
Acredito que ao ler esteja muito confuso, mas ao utilizarem o ficheiro de teste vão perceber.
Agradeço desde já qualquer ajuda disponibilizada.
Obrigado
Código em VBA para filtragem de vários critérios
Enviado: 22 Set 2018 às 16:58
por gfranco
Boa tarde.
Eu queria ajudar.
Baixei a planilha mas confesso que não compreendi muito bem o seu objetivo.
Talvez outro membro tenha entendido e possa ajudar.
Código em VBA para filtragem de vários critérios
Enviado: 22 Set 2018 às 18:29
por Bmcs
Boa Noite
Agradeço desde já a ajuda.
Eu compreendo, é um caso muito específico e complicado de explicar.
Obrigado
Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 11:12
por Reinaldo
Não tenho certeza de haver entendido, mas, veja se atende caso não por favor forneça maiores detalhes, alterado apenas para btnCapa
Re: Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 11:24
por Bmcs
Reinaldo escreveu:Não tenho certeza de haver entendido, mas, veja se atende caso não por favor forneça maiores detalhes, alterado apenas para btnCapa
Muito obrigado!! É isto mesmo.
Há alguma forma de colocar mais critérios de pesquisa?
Por Exemplo:
Call FindAllMatches(TextBox_Find.Text, "Capa";
"c4p4";Cap4") (Sei que o código não é assim pois já fiz o teste, mas não sei onde estou a errar)
Mais uma vez muito obrigado.
Re: Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 12:36
por Reinaldo
Nessa estrutura de pesquisa e mais simples e direto é utilizar o termo pesquisado assim: "c?p?" ; para isso altere:
Código: Selecionar todosPrivate Sub CommandButton1_Click()
Call FindAllMatches(TextBox_Find.Text, "C?p?")
End Sub
Inconveniente:
Se tiver em seu banco palavra similar tipo "cipo" ou "cepo" ou "copa" (por exemplo); também serão listadas.
Caso exista essa possibilidade é necessário (creio eu) "construir" uma pesquisa para cada botão ou talvez criar um array de variações, requerendo assim maior analise.
Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 12:56
por Bmcs
Não consigo com o método "c?p?", mas não há problema, já me ajudou bastante.
Gostaria agora apenas de saber se consigo separar a base de informação para uma sheet (e de preferência escondê-la) e colocar o userform em outra sheet. Ou seja, eu quero esconder toda a informação da base de dados para que o usuário tenha apenas acesso ao userform.
Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 13:26
por Reinaldo
Não consigo com o método "c?p?",
Nessa pesquisa e case sensitive, diferencia maiúscula de minuscula deve ser escrito "C?p?"
para evitar isso experimente alterar na linha conforme abaixo: (alterado no modelo anexo)
Código: Selecionar todos For lFound = 1 To UBound(arrResults)
If UCase(arrResults(lFound, 1)) Like "*" & UCase(strBegin) & "*" Then
se consigo separar a base de informação para uma sheet (e de preferência escondê-la)
Veja no anexo se atende
Re: Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 13:45
por Bmcs
Reinaldo escreveu:Não consigo com o método "c?p?",
Nessa pesquisa e case sensitive, diferencia maiúscula de minuscula deve ser escrito "C?p?"
para evitar isso experimente alterar na linha conforme abaixo: (alterado no modelo anexo)
Código: Selecionar todos For lFound = 1 To UBound(arrResults)
If UCase(arrResults(lFound, 1)) Like "*" & UCase(strBegin) & "*" Then
se consigo separar a base de informação para uma sheet (e de preferência escondê-la)
Veja no anexo se atende
Perfeito!! Funciona optimamente!
Muito obrigado!
Estive a ver o código e agora percebo.
Só falta uma última coisa. Quando seleciono os resultados no userform, ele mostra-me a seleção na sheet. Penso que a solução esteja neste código:
"
Código: Selecionar todosPrivate Sub ListBox_Results_Click()
'Go to selection on sheet when result is clicked
Dim strAddress As String
Dim l As Long
For l = 0 To ListBox_Results.ListCount
If ListBox_Results.Selected(l) = True Then
strAddress = ListBox_Results.List(l, 1)
ActiveSheet.Range(strAddress).Select
'Populate textboxes with results
With ActiveSheet
f_FindAll.sku.Value = .Cells(.Range(strAddress).Row, 3).Value
f_FindAll.pvp.Value = .Cells(.Range(strAddress).Row, 2).Value
f_FindAll.stock.Value = .Cells(.Range(strAddress).Row, 4).Value
End With
GoTo EndLoop
End If
Next l
EndLoop:
End Sub
No entanto, já tentei várias vezes editá-lo e acabo sempre por ter um erro.
Obrigado.
Re: Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 13:53
por Reinaldo
Agora não posso testar mas basicamente:
Exclua ou comente a linha --> ActiveSheet.Range(strAddress).Select
e alinha -->With ActiveSheet
altere para --> With sheets("Find All")
Provavel que resolva
Re: Código em VBA para filtragem de vários critérios
Enviado: 23 Set 2018 às 14:49
por Bmcs
Reinaldo escreveu:Agora não posso testar mas basicamente:
Exclua ou comente a linha --> ActiveSheet.Range(strAddress).Select
e alinha -->With ActiveSheet
altere para --> With sheets("Find All")
Provavel que resolva
Funcionou perfeitamente! É como dizem....o pormenor está nos detalhes
Nem sei como agradecer esta excelente ajuda!
Este ficheiro é muito importante e tenho aqui muitas horas de trabalho.
Mais uma vez muito obrigado pela enorme ajuda.
Cumprimentos