Notifications
Clear all

Procurar Valores

9 Posts
2 Usuários
0 Reactions
1,431 Visualizações
(@pedro12345)
Posts: 48
Eminent Member
Topic starter
 

Boa tarde caros colegas,

Mais uma vez necessito da vossa imprescindível ajuda.
Tenho agora um desafio para um controlo de levantamento de componentes/ferramentas.
Já iniciei o projeto, mas estou a ter dificuldade em avançar.
O meu objetivo é criar um registo para saber quais as ferramentas que foram levantadas para utilização da produção de materiais, de forma a estimar a vida útil dos mesmos.
Para essa produção de materiais, são lançadas ordens, com quantidades de componentes, onde está associado o respetivo código do material a produzir.
Essa material a produzir pode ter, até ao momento, a utilização de 4 componentes ou ferramentas codificadas de forma diferente, que estão guardadas em locais específicos num armário (A1;A2; B1;B2;C1;C2; etc.).
Foram criadas duas tabelas:
1) Com informação das Ordens, Qtd e Materiais a produzir;
2) Com as ferramentas e localização associadas aos Materiais a produzir;

Na tabela onde existem materiais com mais do que 1 ferramenta, estou a utilizar a função do excel Procv(), mas estou a ter dificuldade, pois só me encontra o primeira ferramenta, não me aparecendo as restantes.

Posteriormente, o operador seleccionaria no Botão que eu crei: Controlo de Formulário, qual a ferramenta que está a utilizar para a produção do Material e se teria ou não alguma ocorrência detatada.

Como ao selecionar o botão que criei ele é do tipo Boolean (Verdadeiro/Falso), saberia qual a ferramenta que utilizou e gravaria os dados com a mesma (a ideia seria aparecer no pior dos casos, 4 ferramentas e gravar na BD apenas as que o operador selecionouno Controlo Formulário)

Criei um Botão para Pesquisar as Ferramentas, pois acredito que seja necessário de o fazer..
Tenho dúvidas também se seria possível ao seleccionar/desseleccionar o visto no botão de controlo de formulário, seria possível ocultar as ferramentas da célula com a ferramenta correspondente.

A minha principal dúvida é se existe forma de procurar ferramentas na tabela e aparecer-me as 4 pretendidas, conforme exemplo que eu já preparei no ficheiro..
Será que alguém me pode ajudar?

Estou aberto a sugestões de forma a me darem ideias se haverá outra forma mais simples de trabalhar com botões de formulario para posterior seleção da ferramenta.

O meu muito Obrigado em antemão.

Um abraço,
Pedro Santos

 
Postado : 16/06/2017 10:02 am
(@pedro12345)
Posts: 48
Eminent Member
Topic starter
 

Creio que a formula final seria algo semelhante ao código abaixo...
Sabem agora como colocar a aparecer os resultados nas células especificas??

Public Function VLookupValues(lookupValue As String, _

            lookupRange As Range, _

            columnIndex As Integer, _

            Optional distinct As Boolean = False) _

            As String

Dim x As Long

Dim result As String

On Error GoTo errVLookupValues

    ‘ Ciclo em todas as linhas do range

    For x = 1 To lookupRange.Rows.Count

        Dim r As Range

        Set r = lookupRange.Cells(x, 1)

        ‘ Verifica se o valor é igual ao indicado

        If r.Value = lookupValue Then

            Dim str As String

            ‘ Utiliza o Offset para ir buscar a coluna indicada

            str = r.Offset(, columnIndex – 1).Value & “;”

            ‘ Caso se pretenda apenas os valores diferentes e

            ‘ já  esteja já na lista não faz a concatenação

            If distinct And InStr(1, result, str, vbTextCompare) = 0 _

                        Or Not distinct Then

                result = result & str

            End If

        End If

    Next

    ‘ Se não encontrar nada coloca uma mensagem genérica

    If Len(result) > 0 Then

        ‘ Remove o último “;”

        VLookupValues = Left(result, Len(result) – 1)

    Else

        VLookupValues = “Não Encontrado”

    End If

Exit Function

errVLookupValues:

    VLookupValues = “”

End Function
 
Postado : 18/06/2017 2:46 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Pedro,

Deixa ver se entendi, você quer que as células B11:B14 sejam preenchidas pelos valores da tabela na planilha 'BDados', com o valor da célula B9 que bater com com o encontrado na coluna E da 'BDados'?

OBS: Não use a ferramenta CODE para dar up nos tópicos que você abre.

att,

 
Postado : 18/06/2017 4:43 pm
(@pedro12345)
Posts: 48
Eminent Member
Topic starter
 

Eu neste momento tenho uma tabela com materiais e ferramentas usadas na produção.
A ideia é registar o levantamento e registo de incidências, caso ocorra, com essas ferramentas.
Mas esses Materiais podem ser produzidas com mais de uma ferramenta (sabendo que o máximo de ferramentas que posso ter para um material são 4):

Exemplo:
Material 1 - Ferramenta 1
Material 1 - Ferramenta 2
Material 1 - Ferramenta 3
Material 1 - Ferramenta 4
Material 14 - Ferramenta 10
Material 14 - Ferramenta 23
...

No separador Registos, tenho então a possibilidade de ter essas 4 ferramentas, em cada uma das 4 células, onde posteriormente quero registar as ferramentas utilizadas pelo operador:
A questão é que quando faço o PROCV() do Material 1 para a tabela, ele apenas devolve a Ferramenta 1, ou seja, aqui o PROCV() não funciona, porque na célula 2, 3 e 4, vai devolver sempre a ferramenta 1, e não a 2,3 e 4 respectivamente, onde pensei que a solução acima teria de ser implementada com VBA.

Para materiais onde exista, p. exemplo, apenas 2 ferramentas a ideia seria preencher as suas células referentes às duas Ferramentas encontradas, onde não existindo as ferramentas 3 e 4, para esse material, preenche-se essas células com 2 hifens: "--", por exemplo...

Após essa opção o operador com a "Caixa de Texto - Controlo de Formulário" iria colocar o visto na ferramenta que foi buscar ao armazém e mencionar se ocorreu incidência ou não com a mesma.
A ideia é também no futuro fazer um estudo de quantas peças faz cada ferramenta, desse dado material produzido, de forma a estimar a vida útil das ferramentas e criar avisos/alertas.
Ou seja, sabendo que para o Material 1, a Ferramenta 3, faz em média 400 peças, quero que vá criando avisos por mail, quando uma nova Ferramenta 3 já tiver feito umas 350 peças, de forma a prevenir falta de ferramentas ou danos nas peças produzidas....

Obrigado pela resposta! :) ;)

E grato se me conseguires dares ideias com a vasta experiência que tens! :)

 
Postado : 19/06/2017 5:54 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Ok,

Entendi que a Procv() não funciona para esse caso, e tenho um ideia de como resolver com VBA.

Porém me confirme se eu entendi corretamente de onde para onde os dados vão:

Deixa ver se entendi, você quer que as células B11:B14 sejam preenchidas pelos valores da tabela na planilha 'BDados', com o valor da célula B9 que bater com com o encontrado na coluna E da 'BDados'?

att,

 
Postado : 20/06/2017 12:28 pm
(@pedro12345)
Posts: 48
Eminent Member
Topic starter
 

Não o separador BDados mas sim o separador Lista, Tabela: Tab_Armazém. O Separador BDados seria para depois guardar os dados registados em cada uma das células..

No anexo que agora coloco disponivel, que está mais avançado, mostro mesmo isso:
Células B15:B18 e correspondentes locais de armazenamento C15:C18 a serem preenchidas pelas Ferramentas do Material que se encontra na célula B10 desse separador Registos...
Onde vai procurar correspôndência?
Separador Lista, Tab_Armazém, a procurar na coluna J:J o material (B10 Registos) e a devolver o 1, 2 3, 4 valor encontrado na Coluna L, correspondente ao Material..

Eu consegui fazer pelo PROCV() o que pretendo, mas tive de criar uma tabela auxiliar como demonstro no anexo, mas se tiver que acrescentar mais Materiais e Ferramentas à TabelaArmazém, terei sempre de perder tempo a atualizar essa tabela secundária (onde crio indice e removo duplicados posteriormente)..
Daí que fazer por índice em VBA era canja :)
Consegues ajudar-me?

Obrigado pela atenção!

Um abraço!

 
Postado : 20/06/2017 4:25 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde Pedro,

Veja se o código que está no módulo3 traz o resultado desejado.

Teste e dê retorno.

att,

 
Postado : 21/06/2017 1:05 pm
(@pedro12345)
Posts: 48
Eminent Member
Topic starter
 

TOPPP!!!! :o

Com a análise ao seu código inventei mais um pouco e desenvolvi mais...
Coloquei praticamente todas as células a serem preenchidas em automático, em background no separador Registos sem ser necessário o comand button para Verificar...
Dessa forma o utilizador coloca apenas a Ordem e aparece logo os dados todos preenchidos, faltando apenas a seleção das ferramenta que levantou do armazém com o visto..

Criarei também um novo separador para a reposição das Ferramentas no armazém, sendo esse separador Registos o de levantamento de ferramentas.
Vou assumir como chave primária a Ordem, pois creio ser mais fácil que o número do Registo para eles darem como entrega novamente em armazém.

Só tenho de analisar agora com as fórmulas Verdadeiro e Falso que devolve da selação das ferramentas, nos vistos, se consigo colocar a dar baixa exatamente das ferramentas que o operador levantou..
Estou disponível para suas sugestões neste caso..

Vou continuar a desenvolver e se tiver mais duvidas, falamos! :)

Vou colocar o Ficheiro disponível para ver o resultado e se alguém precisar...
Sem dúvida que é muito útil,..

O meu obrigado!
Após seu comentário, lhe darei um agradecimento! ;)

 
Postado : 21/06/2017 4:43 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa noite Pedro,

Que bom que entendeu meu código e conseguiu adaptar. Como não sei todo o processo que você está trabalhando, não posso opinar se é a melhor forma de fazer a busca para os dados.

Para outras dúvidas o ideal é você abrir um outro tópico.

OBS: Não esqueça de marcar o tópico como resolvido.

att,

 
Postado : 22/06/2017 8:32 pm