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

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
Por ALANCASTROALVES
#41979
Boa Noite!
Gostaria de realizar o fechamento automático de algumas informações conditas em um banco de dados, onde registramos as informações diárias de manutenção de veículo. Gostaria que quando o dia vira-se, se a O.S "Ordem de serviço", não tive-se sido realizada e estivesse ainda com os Status "Manutenção" , ela fosse fechada as 23:59 e reaberta às 00:01 do dia seguinte até a data que ela for encerrada definitivamente.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#41991
Olá Alan,

Veja se a solução anexa te atende. Criei um novo código na coluna M, onde 0=não aberta, 1=fechada, e (agora o novo) 9=fechada e reaberta.

A macro é executada automaticamente na abertura da planilha, e será executada também automaticamente sempre 1 segundo após a meia-moite.

A macro funciona assim:
* Verifica qual a última linha com preenchimento, baseado no que está digitado na coluna B. Percorre cada uma dessas linhas, e age apenas naquelas em que a data de abertura for inferior à data da execução, E não houver data de fechamento.
* Para essas linhas, a macro copia toda a linha para logo após a última linha preenchida. Na linha original, copia a data de abertura (coluna B) para a data de fechamento (coluna H)m coloca a hora de fechamento às 23:59:59, e muda o código da coluna M para 9, indicando que não se trata de um fechamento normal.
* Para a linha copiada (a de baixo), a data atual é colocada como sendo a data de abertura, e o horário de abertura é 00:00:01.
* No final da execução, uma nova execução automática é agendada para às 00:00:01 do dia seguinte, para o caso de você passar a madrugada trabalhando.

Como você não deu muitos detalhes de como deveria funcionar o fechamento/reabertura, provavelmente algumas coisas não estarão de acordo, mas vamos acertando aos poucos.

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
Por ALANCASTROALVES
#42095
Bom dia!
Estamos no caminho certo, realizei algumas alterações na planilha de modo com que ela se pareça já com o modelo final. Como entendo muito pouco de vba, poderia me demonstrar por etapas a lógica de funcionamento de cada uma da linhas programadas? E verificar se a planilha continua executar as tarefas pré definidas. Desde já agradeço muito pela ajuda, estou procurando estudar e entender mais sobre esse assunto.
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por ALANCASTROALVES em 20 Mar 2019 às 15:03, em um total de 2 vezes.
Por ALANCASTROALVES
#42103
Também pude notar que a lógica executa o fechamento e abertura no horário pré definido, porém ela não segui uma linha de abertura e fechamento.Vou dar como exemplo o veículo "C46", no dia 02/11/2019 ela fechou no horário pré definido que estipulamos "23:59:59", ela deveria continuar abrindo e fechando essa ordem de serviço caso ela não fosse executada durante os dias recorrentes, 03/11/2019 aberta às "00:00:01" e fechada às "23:59:59" e aberta novamente no dia 04/11/2019 e assim por diante.

Imagem
Avatar do usuário
Por Jimmy
Avatar
#42117
Olá Alan,

A macro está funcionando na sua nova planilha.

Alterei a macro INICIAR para resolver um problema: caso o usuário clicasse várias vezes no botão "I" (iniciar relógio), haveriam várias rotinas MEURELOGIO executando por segundo. Se você incluir a linha
range("B2").value = range("B2").value + 1
que é um contador, logo como primeira linha da macro MEURELOGIO, você verá isso acontecer. Note que o contador cresce 1 por segundo. Clique no "I" novamente e verá ele crescer 2 por segundo, e a cada clique no I, cresce mais ainda. Resolvido!

Apenas como treino, você poderia unificar as subs INICIAR e PARAR, e colocar um único botão na planilha. Quando clica uma vez, aciona o relógio. Clicando novamente, ele para. (exercício pra fazer em casa :) )

Observação: quando a macro roda, a lista de comandos executados é limpa, de forma que você não pode usar o VOLTAR (CTRL-Z). Como sua macro de relógio executa 1 vez por segundo, você perdeu a possibilidade de usar o VOLTAR. Eu acho que o relógio deveria ficar fora do Excel, porque o Windows já tem relogio (canto inferior direito). O que você pode fazer é deixar as macros INICIAR / PARAR, e colocar uma boliha (só um exemplo) que ficaria verde ou vermelha, caso o sistema de fechamento automático estiver ativo ou desativo. Assim, a macro deixaria de rodar a casa segundo, rodando apenas ao clicar no botão. Se o operador quiser saber as horas, ele olha no reloginho do windows.

Pelo que entendi, se uma OS foi aberta e não foi fechada, deve haver uma abertura/fechamento para cada dia do calendário. Correto? Isso pode causar problemas se você digitar um ano errado, por exemplo 2009 ai invés de 2019. A macro incluirá 3650 linhas de abertura e fechamento. Mas se for assim que deve funcionar, faremos.

Jimmy San Juan
Avatar do usuário
Por Jimmy
Avatar
#42120
Esqueci de anexar...
Você não está autorizado a ver ou baixar esse anexo.
Por ALANCASTROALVES
#42144
Então vamos lá!
Está ocorrendo um erro assim que eu abro a planilha dizendo a seguintes frases "O método 'Rows' do objeto '_global' falhou, mandei depurar para localizar a linha com erro, mesmo assim não estou compreendendo o que está acontecendo. Continuando segui sua orientação já que o relógio não ia servi de muita coisa dentro do Excel e ainda iria fazer com que eu perdesse a função de voltar "CTRL+Z". Também realizei uma alteração que impedirá que o operador insira uma data superior ou inferior estipulado por mim, que no caso será entre 01/01/2019 à 31/12/2019, sendo assim eliminando o risco de o operador inserir uma data errada e a macro inseri-se dezenas de linhas erradas automaticamente. Seque Link do anexo pelo google Drive já que passou de 5 mb.

https://drive.google.com/open?id=1x48zY ... qB7exgpcxa
Avatar do usuário
Por Jimmy
Avatar
#42149
Abri a planilha aqui e não erro algum.

Vamos tentar uma coisa. Você tem 68 mil linhas na planilha Celulose. Exclua algumas delas (ou muitas) pra que a planilha baixe de 5Mb e possamos enviar por aqui. Após apagar essas linhas, veja se o erro na abertura continua.

A macro foi feita pra rodar em uma planilha, mas agora me dei conta que há 2 planilhas com o mesmo layout: celulose e madeira.
Pergunta. A macro, quando roda, deve executar em ambas as planilhas ou só em uma?

Jimmy San Juan
Por ALANCASTROALVES
#42152
Pronto exclui algumas linhas para diminuir o tamanho do arquivo.
Em relação a sua pergunta a Macro deverá ser executada nas duas abas "P.A CELULOSE", "P.A MADEIRA". Segue anexo se possível colocar aquele indicador que fique verde ou vermelho caso a macro esteja funcionando direitinho eu ficaria muito feliz. rsrs :D
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#42157
Alan,

Vou ter que alterar a macro pra rodar nas duas planilhas. Os nomes delas vão ficar presos dentro da macro. Assim, se você alterar um dos nomes, já não vai rodar. Uma forma de contornar isso é você renomear as planilhas colocando um sinal de menos (apenas um exemplo), na frente do nome. Ex: "-P.A CELULOSE". Ai a macro iria, toda vez que executar, verificar na pasta de trabalho todas as planilhas que tem o nome iniciando por "-", e rodar em cima dela. Se quiser trocar o nome da planilha, fica livre, contanto que ela continue a iniciar por "-".

Hoje não conseguirei alterar nada, mas amanhã ok. Enquanto isso pense no que disse acima.

A bolinha verde não era pra indicar se a macro tá rodando ok ou não. Era pra indicar se o seu relógio estava parado ou andando.

A bolinha verde pra indicar macro ok é meio questionável. Imagine que está verde, o operador salva e encerra. Depois abre novamente pra continuar a trabalhar, mas por algum motivo a macro de evento OPEN não roda. A bolinha foi salva verde e continuará verde!
O que pode ser feito é reservar uma área da planilha (Ex. Célula A1) onde conste: "próximo encerramento/abertura de O.S. será feito em 21/03/2019, 23:59:59". O operador olha isso, e se a data for a de ontem, sabe que algo falhou, porque deveria estar lá a data de hoje.

Obrigado pelos "Obrigado" ;)

Jimmy San Juan
Avatar do usuário
Por Jimmy
Avatar
#42216
Oi Alan,

Desculpe a demora.

Alterei a planilha e gostaria que você testasse bastante. Agora ela gera O.S. para cada dia entre a data de abertura e a data do dia da execução, ou seja, se ficar 10 dias sem rodar a macro, quando rodar ela vai gerar uma linha para cada dia que passou.
Isso levanta uma questão: será que a execução automática no início é uma boa idéia? E se o operador ficou doente, ou o PC quebrou, e ficou 5 dias sem lançar os fechamentos? Assim que ele entrar na planilha, várias OSs serão fechadas e reabertas indevidamente. O correto seria esperar ele lançar o que tinha que lançar retroativo ao tempo em que ficou doente, e só depois executar a macro. Se você concorda que isso pode ser um problema, pensamos nas possíveis soluções.

No fechamento e abertura automático eu desconsiderei sábados e domingos, porque achei que futuramente você vai querer contabilizar tempo de reparo, etc, e pode querer não considerar finais de semana. Se quiser que considere os 7 dias da semana, é só apagar a linha da macro onde o comentário diz "Desconsidera sábados e domingos". Apague a linha toda.

Na abertura da planilha as células A1 das planilhas alvo da execução, são apagadas, e durante a execução é colocado um texto informando data e hora da próxima execução.

Dê retorno,

Jimmy San Juan
Você não está autorizado a ver ou baixar esse anexo.
#42380
Boa tarde!
É praticamente isso!. Realizei algumas alterações adicionando alguns campos onde irei utilizar para fazer os cálculos de DM "disponibilidade mecânica", EO "Eficiência operacional" e DOG "Disponibilidade operacional Global". Muito obrigado pelo seu empenho e apoio para me ajudar a desenvolver esse projeto, essas informações será de muito bom uso. Obrigado!!! qualquer dúvida grito Help!
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#42391
À disposição. Boa sorte!!
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