Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#37012
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
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por Bmcs em 22 Set 2018 às 18:33, em um total de 1 vez.
#37017
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.
#37023
Não tenho certeza de haver entendido, mas, veja se atende caso não por favor forneça maiores detalhes, alterado apenas para btnCapa
Você não está autorizado a ver ou baixar esse anexo.
#37024
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.
#37027
Nessa estrutura de pesquisa e mais simples e direto é utilizar o termo pesquisado assim: "c?p?" ; para isso altere:
Código: Selecionar todos
Private 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.
#37029
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.
#37031
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
Você não está autorizado a ver ou baixar esse anexo.
#37033
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 todos
Private 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.
#37035
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
#37041
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 :D

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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord