Página 1 de 1

Periodicidade de substituição

Enviado: 09 Ago 2019 às 06:12
por kiko
Bom dia a todos, estou tento um problema para resolver é o seguinte:
Tenho uma planilha com nomes dos empregados;
Outra com os materiais que usam e o período máximo para as trocas;
Outra com o nome do empregado, o material e a data que foi TROCADA.
PENSO EU que com VBA seria mais provável.
Como posso fazer para que, ao abrir essa pasta de trabalho, me apareça a relação de todos os empregados e os materiais que devem ser trocados da DATA ATUAL ATÉ DOIS DIAS APÓS?
Obs; Baseado na tabela de Periodicidade de troca da planilha “Materiais”

Re: Periodicidade de substituição

Enviado: 09 Ago 2019 às 07:57
por Jimmy
Bom dia Kiko,

Segue a planilha. A verificação se a troca é necessária ou não fiz por fórmula. A macro, que é executada na abertura da planilha, apenas classifica a tabela, de forma a deixar nas linhas de cima as trocas necessárias.

Qualquer dúvida, me avise.

Jimmy San Juan

Periodicidade de substituição

Enviado: 09 Ago 2019 às 11:58
por kiko
Jimmy bom dia, mais uma vez você prontamente em ajudar, mas vamos para a realidade atual:
temos mais de 50 empregados
e esses empregados trocam diversos tipos de materiais
materiais esse que tem validade para troca de diversos períodos
que cada empregado pode ou não trocar mais de um material da mesma vez
Esses materiais vencem em datas diferentes, haja vista a periodicidade de trocas
Vamos ao que eu penso que poderia ser feito:
Ao abrir a pasta de trabalho seria apresentado, caso necessita-se de trocas, um formulário com uma relação com nome empregado, material à ser trocado e a data que aquele material venceria ou venceu.
A partir da troca realizada essa nova data seria o parâmetro para a relação futura.
Não sei se me fiz entender, mas qualquer dúvida estou disposto a sana-la.
Pelo exposto acima que acho que tem que ser por VBA, para ser uma coisa dinâmica e automática.
Desde já agradeço e no aguardo de suas enriquecidas dicas.

Re: Periodicidade de substituição

Enviado: 09 Ago 2019 às 13:14
por Jimmy
Olá Kiko,

Creio que a forma que eu te apresentei atende às necessidades, é totalmente automático, e mostra quem tem trocas a fazer, e quem não. O que podemos acrescentar é um segundo critério de classificação por nome da pessoa, para que quando ela comparecer para trocar, vejam-se as suas necessidades de trocas todas juntas.

Quando a troca é feita, basta digitar a data do dia na coluna de data, e pronto.

O que podemos fazer apenas para você poder testar, é alterar a fórmula para em vez de pegar o dia de HOJE(), pegar uma data digitada em alguma célula. Assim você pode simular mudanças de dias. Lembre-se que a classificação é feita apenas na abertura da planilha, então, ao simular uma mudança de data, teria que salvar/fechar e abrir a planilha.

Eu gostaria que você me dissesse onde o modelo que mandei está insuficiente, para podermos acertar.

Se você preferir fazer 100% com macro VBA, não há problema, podemos fazer. Não sei seu nível de conhecimento em Excel ou VBA, mas para quem não tem muito conhecimento, pode ser mais fácil de fazer manutenção em fórmulas em caso de mudanças de planilha, colunas, faixas, etc, do que em VBA.

Jimmy San Juan

Periodicidade de substituição

Enviado: 09 Ago 2019 às 18:03
por kiko
Jimmy boa noite, mais uma vez dedicado e atencioso
“Creio que a forma que eu te apresentei atende às necessidades, é totalmente automático”
Resposta: Concordo mas atende em parte às necessidades.

“Quando a troca é feita, basta digitar a data do dia na coluna de data, e pronto.”
Resposta: Quando a troca é feita é gerado uma nova linha, pois a entrega anterior tem que ficar registrada, por isso um novo registro.

“O que podemos fazer apenas para você poder testar, é alterar a fórmula para em vez de pegar o dia de HOJE(),.....”
Resposta: Não adiantaria pelo exposto acima.

“Eu gostaria que você me dissesse onde o modelo que mandei está insuficiente, para podermos acertar.”
Resposta: No modelo apresentado teria que alterar a data do registro já existente e na realidade gerar um novo registro.

“Se você preferir fazer 100% com macro VBA, .... Não sei seu nível de conhecimento em Excel ou VBA, .....”
Resposta: Hoje não sou totalmente Crú, mas também não estou no seu nível e de outros aqui existentes, mas já faço algum códigos graças as dicas desse e outros fórum que muito enriquece meu conhecimento.

Obs: Como relatado acima, para cada vez que se faz uma troca se gera um novo registro individual EMPREGADO/MATERIAL/DATA e essa data que passará a ser o parâmetro do próximo RELATÓRIO apresentado na abertura, haja vista não poder DELETAR/ALTERAR o já existente, por isso que disse anteriormente “que acho que tem que ser por VBA, para ser uma coisa dinâmica e automática.
Certo de sua dedicada e valorosa atenção, fico no aguardo.

Re: Periodicidade de substituição

Enviado: 09 Ago 2019 às 19:50
por Jimmy
Ok, entendido. A peça que faltava era a necessidade de manter o histórico.

Nova proposta: Deixamos a planilha como está, e incrementamos o restande em VBA da seguinte forma. O operador abre a planilha e terá na sua frente a relação completa:
- os que necessitam ser trocados;
- os que ainda não não estão na hora de trocar;
- os que já foram trocados.

Quando o operador efetuar uma troca, ele digitará "OK" na coluna E (Trocar). A macro identifica essa digitação, e toma três ações:
A) Alterar o OK por OK + HOJE() + Atraso/adianto: "OK 09/08/2019 (-2)". O -2 significa "trocou 2 dias antes do dia da troca. Poderia ser "OK 09/08/2019 (+5)" significando "trocou 5 após o dia certo de troca.
B) Inclui uma nova linha (novo registro) contendo o mesmo funcionário, o mesmo material, e a data de hoje.
C) Reclassifica os dados para que a linha com OK saia da parte de cima da lista, permanecendo apenas as linhas com troca necessária.

Assim, essa linha que gerou a necessidade de troca nunca mais será apontada como TROCA porque a fórmula existente terá sido substituída por OK+HOJE, e a nova linha criada ficará aguardando até chegar a hora da troca dela ser feita.

Podemos também filtrar esses dados, para permitir, por exemplo, consultar o histórico de trocas de João, material Luvas.
Se implementarmos filtros, seria interessante dividir a informação "OK 09/08/2019 (-2)" em 3 colunas distintas, para permitir, por exemplo, classificar por atraso/adianto e identificar quem está atrasando muito as trocas, ou identificar tudo o que foi trocado no dia 04/08/2019, por exemplo.

Se quiser 100% VBA, passamos a verificação se é hora ou não de trocar para a macro, e a planilha passa a não ter mais fórmulas (pelo menos nessa parte).

Aguardo críticas.

Jimmy San Juan

Re: Periodicidade de substituição

Enviado: 10 Ago 2019 às 05:55
por kiko
Jimmy bom dia, vamos as respostas:
“Nova proposta: Deixamos a planilha como está, e incrementamos o restande em VBA da seguinte forma. O operador abre a planilha e terá na sua frente a relação completa:
- os que necessitam ser trocados;
- os que ainda não não estão na hora de trocar;
- os que já foram trocados.”

Resposta: Deixamos a planilha como está – OK
, e incrementamos o restante em VBA – Ok
Preciso que operador abre a planilha e terá na sua frente a relação completa: SOMENTE
- os que necessitam ser trocados;” da DATA ATUAL ATÉ POR EXEMPLO +2 DIAS, conforme PERIODICIDADE de cada material

“Quando o operador efetuar uma troca, ele digitará "OK" na coluna E (Trocar).”
Resposta: Não podemos digitar na coluna já registrada, temos que gerar um novo registro que “ANULA” aquela troca anterior e vigora a atual

“A macro identifica essa digitação, e toma três ações:
A) Alterar o OK por OK + HOJE() + Atraso/adianto: "OK 09/08/2019 (-2)". O -2 significa "trocou 2 dias antes do dia da troca. Poderia ser "OK 09/08/2019 (+5)" significando "trocou 5 após o dia certo de troca.”
Resposta: Criar uma nova coluna para registrar “Ok” dos registros EMPREGADO/MATERIAL/DATA que foi feita a troca e gerado novo registro EMPREGADO/MATERIAL/DATA achei excelente, porque poderíamos fazer diversos tipos de filtros em cima dessa coluna Ok como por exemplo oque foi dito “Podemos também filtrar esses dados, para permitir, por exemplo, consultar o histórico de trocas de João, material Luvas.”

“Se quiser 100% VBA, passamos a verificação se é hora ou não de trocar para a macro, e a planilha passa a não ter mais fórmulas (pelo menos nessa parte).”
Resposta: Penso eu que seria melhor com VBA, por que quando abrir a pasta de trabalho apareceria um formulário com um ListBox (penso eu) e nele estaria todos os registros EMPREGADO/MATERIAL/DATA que necessitariam de troca na data atual e data atual +2, por exemplo, e usaríamos um formulário que poderia selecionar UM EMPREGADO a fazer a troca de diversos materiais ao mesmo tempo, desde que a PERIODICIDADE de cada material for respeitada. Jimmy o relatado acima são coisas do meu pensamento de estudioso, mas prioriza a sua vasta experiência e bom senso aos quais respeito.
Desde já agradeço sua preciosa atenção e fico no aguardo.

Re: Periodicidade de substituição

Enviado: 11 Ago 2019 às 09:11
por kiko
Jimmy bom dia, e feliz dia dos pais à você e à todos os usuários que se enquadram nessa condição.
Segue em anexo uma cópia da planilha do modo que pretendo que possa ficar.
As explicações que pensei serem necessárias estão dentro do código.
Grato

Re: Periodicidade de substituição

Enviado: 11 Ago 2019 às 20:40
por Jimmy
Olá Kiko, boa noite.

Ultimamente não tenho tido muito tempo para o fórum, e não me sentirei bem em assumir te ajudar num trabalho como esse. Da forma que você está pensando agora, está mais complexo que o que eu havia sugerido, mas, é claro, não adianta ser mais simples se não te atende. Como a ideia cresceu, incluindo agora até formulário, tenho receio de uma hora pra outra não ter tempo pra te ajudar e te deixar na mão. Prefiro nem começar.

Me proponho a te ajudar em uma ou outra dúvida pontual, que você lance no fórum.

Desculpe!

Jimmy San Juan

Re: Periodicidade de substituição

Enviado: 11 Ago 2019 às 20:48
por osvaldomp
Veja se a solução do arquivo anexado ajuda.

Tomei como base o arquivo disponibilizado no primeiro post (#46668).

Periodicidade de substituição

Enviado: 12 Ago 2019 às 11:48
por kiko
Jimmy bom dia e muito obrigado pela atenção dispensada e aguardo sua ajuda em uma ou outra dúvida pontual que possa a ter.

Osvaldomp obrigado pela sua dedicada atenção e estarei testando e darei o retorno o mais breve possível!
Desde já agradeço.
OBS: Osvaldomp voçê chegou a ver o outro arquivo enviado?

Re: Periodicidade de substituição

Enviado: 13 Ago 2019 às 05:29
por kiko
Osvaldomp bom dia, estive olhando o seu código e não consegui adaptar a minha realidade, estou anexando um novo arquivo muito perto da minha realidade e gostaria que na ABA "Entregas" selecionasse os registros com data de vencimento IGUAL E + 2 DIAS da DATA ATUAL (todos que estão em AMARELO) e colasse na ABA "Temp" o resultado dessa seleção, é claro que limpando o que já existia anteriormente, pois dessa maneira já teria as trocas à serem realizadas.
Desde já agradeço.

Re: Periodicidade de substituição

Enviado: 13 Ago 2019 às 09:11
por osvaldomp
kiko escreveu:... (todos que estão em AMARELO) ...
Me parece que você se atrapalhou aí pois dos 7 registros que você pintou de amarelo somente 3 atendem ao critério.

Segue uma cópia da nova versão do seu arquivo com o código alterado de acordo.

Periodicidade de substituição

Enviado: 13 Ago 2019 às 11:35
por kiko
“Me parece que você se atrapalhou aí pois dos 7 registros que você pintou de amarelo somente 3 atendem ao critério.”
Osvaldomp boa tarde, primeiramente me desculpe por não ter te avisado que havia forjado as data de vencimento da ABA "Entregas" da coluna VENCIMENTO, as data da coluna TROCA já são registradas no ato de um novo registro de ENTREGA, por isso que disse para selecionar SOMENTE OS REGISTROS com data de vencimento IGUAL E + 2 DIAS da DATA ATUAL, que no caso seriam os registros com 13, 14 e 15/08/2019 e não há necessidade, nesse momento, de comparar a data da troca com a PERIODICIDADE.
Vou tentar adaptar o código.

Periodicidade de substituição

Enviado: 13 Ago 2019 às 17:23
por kiko
Infelizmente não conseguir seguir sua logica e deu errado, eu só preciso selecionar os dados da na ABA "Entregas" da coluna VENCIMENTO com data IGUAL E + 2 DIAS da DATA ATUAL E colar na ABA "Temp" o resultado dessa seleção.
Você me daria essa luz?

Re: Periodicidade de substituição

Enviado: 13 Ago 2019 às 17:59
por osvaldomp
substitua esta linha
Código: Selecionar todos
  di = Date - mat.Offset(, 1).Value
por esta
Código: Selecionar todos
 di = Date
e substitua esta outra
Código: Selecionar todos
   .[B1:G1].AutoFilter Field:=4, Criteria1:=">=" & CLng(di), Operator:=xlAnd, Criteria2:="<=" & CLng(di) + 2
por esta abaixo
Código: Selecionar todos
    .[B1:G1].AutoFilter Field:=5, Criteria1:=">=" & CLng(di), Operator:=xlAnd, Criteria2:="<=" & CLng(di) + 2

Periodicidade de substituição

Enviado: 15 Ago 2019 às 07:20
por kiko
Osvaldomp bom dia, obrigado pela sua indispensável contribuição na resolução desse tópico e espero um dia poder CRESCER (não de estatura, pois já sou alto, mas de conhecimento) e como você e tantos outros, possa contribuir gratuitamente à quem venha a precisar de meus humildes conhecimentos, muitos deles, adquiridos nesse fórum. Desde já agradeço mais uma vez.