Ir ao conteúdo
  • Cadastre-se

Excel travar contagem progressiva/contagem de tempo (data) a partir de outra célula


Ir à solução Resolvido por Visitante,

Posts recomendados

Olá ! 

 

Venho pedir ajuda aos caros amigos para resolver uma questão, acho eu, que, não muito comum  no Excel.

 

Tenho uma planilha de controle de encaminhamento de processos administrativos para um órgão público, com isso, tenho que calcular o tempo que estes documentos estão em posse de cada um. Observem que no início da planilha eu tenho a data e hora atuais a partir da fórmula "=agora()".Tudo acontece a partir dela.

 

Vejam: 

 

O quadro marcado em azul representa um setor (Diretoria de Planejamento Orçamento e Obras). Dentro desse setor existem várias etapas, ou seja, há várias divisões. Em cada divisão o documento encaminhado demorará um certo tempo, e eu gostaria de enxergar este tempo. A Primeira etapa (do quadro em azul) é a análise da fiscalização. Com isso, assim que receber o documento neste setor, o primeiro passo a se fazer é encaminhar para análise do fiscal. Só basta eu lançar a palavra "Encaminhado" na coluna "S" que aparecerá a data e hora automáticos para esta ação. Automaticamente na coluna "W" aparece uma contagem progressiva no formato de dias/horas/minutos para eu controlar a posse do documento enviado para a divisão em questão.

 

A dúvida:

 

Na coluna marcada por mim em amarelo "U", é onde eu tenho que lançar "RECEBIDO" e com isso TRAVAR A CÉLULA DE CONTAGEM PROGRESSIVA para que ela não atualize a partir da data atual, conforme fórmula lançada.  

 

DICA:

 

Lá na coluna "AH" exite uma fórmula e contagem iguais e inclusive  a contagem trava quando eu lanço "Concluído e encaminhado" na coluna "AG", isso porque existe um código VBA que trava esta contagem. Na verdade eu queria fazer a mesma coisa na situação citada anteriormente, ou seja, nas colunas "W" e "AC", quando lançar "RECEBIDO", que travasse a contagem de tempo, porém, não possuo conhecimento a este nível para acrescentar este código para estas células. 

 

Agradeço desde já a cooperação. 

 

Obrigado. 

 

Hélio Santana 

 

 

DPO_NOVO FLUXO_ver01..rar

Link para o comentário
Compartilhar em outros sites

 

Veja se atende. Substitua o código existente pelo código abaixo.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [U:U,AA:AA]) Is Nothing Then
  If Target.Value = "RECEBIDO" Then Target.Offset(, 2).Value = Target.Offset(, 2).Value
 ElseIf Left(Cells(5, Target.Column), 6) = "STATUS" And Target.Value = "Concluído e Encaminhado" Then
  Target.Offset(, 1).Value = Target.Offset(, 1).Value
 End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

18 minutos atrás, osvaldomp disse:

 

Veja se atende. Substitua o código existente pelo código abaixo.


Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [U:U,AA:AA]) Is Nothing Then
  If Target.Value = "RECEBIDO" Then Target.Offset(, 2).Value = Target.Offset(, 2).Value
 ElseIf Left(Cells(5, Target.Column), 6) = "STATUS" And Target.Value = "Concluído e Encaminhado" Then
  Target.Offset(, 1).Value = Target.Offset(, 1).Value
 End If
End Sub

 

@osvaldomp

 

Meu caro, obrigado de verdade pela ajuda. 

 

Sim, o código travou a coluna que eu gostaria porém, acho que fez com que perdesse a propriedade que já havia, de quando lançar "encaminhado" aparecer a data automática nas colunas "Q", "S", na coluna "U" quando lançasse "Recebido" e nas demais colunas com essa mesma característica. E interferiu principalmente na coluna "AH" que tem um link com a coluna "Q" ao lançar "Recebido". 

 

Na verdade eu gostaria que acontecesse a mesma coisa da coluna "AH" sendo que para as colunas "W" que tem vínculo com a coluna "U" e para a coluna "AC" que tem vínculo com a coluna "AA".

 

você pode baixar a planilha pra visualizar melhor anexada no primeiro post e visualizar esta aqui em anexo para comparação e entender melhor. 

 

Obrigado amigo.

 

 

 

 

Planilha com o código sugerido..rar

Link para o comentário
Compartilhar em outros sites

Eu substitui o trecho abaixo do seu código original

 If Left(Cells(5, Target.Column), 5) = "PROTO" Then
  Target.Offset(, 1).Value = IIf(Target.Value = "", "", Now)

por este

If Not Intersect(Target, [U:U,AA:AA]) Is Nothing Then If Target.Value = "RECEBIDO" Then Target.Offset(, 2).Value = Target.Offset(, 2).

 

E esse novo trecho faz o que segue: após inserir manualmente o texto RECEBIDO na coluna U ou na AA, o código substitui as fórmulas pelos seus respectivos valores na segunda coluna à direita. Ou seja, o código detecta inserção nas colunas U e AA e faz alterações nas colunas W e AC. Só isso, e nada tem a ver com as demais colunas que você citou no seu último post.

Se além do que descrevi acima você quer mais algo, então informe com exatidão.

 

Quanto à segunda parte do seu código original, eu a mantive, pois não me pareceu que você queria alguma alteração.

 

Link para o comentário
Compartilhar em outros sites

@osvaldomp

 

Sim, para o objetivo solicitado foi cumprido. Obrigado. 

 

Porém...

 

Veja que a planilha mantém um fluxo de andamento.

 

Na coluna "Q" ao lançar "recebido", é inserido na coluna "R" data e hora daquele momento automaticamente de forma que não atualiza mais, ou seja, a informação fica estática. Além disto, no mesmo instante inicia uma contagem de tempo progressivo lá na coluna "AH", tal qual permanece  a contar o tempo até que se coloque "concluído e encaminhado" na coluna "AG" e aí a contagem de tempo é travada e a partir daí permanece estática, com o objetivo, justamente de controlar o tempo no setor "DPO" até que se encaminhe para outro setor. 

 

A mesma coisa, de forma automática, eu gostaria que acontecesse nas colunas "W" e "AC" referente a contagem de tempo progressiva:

 

- Na coluna "S" ao  lançar "encaminhado" (Ao mesmo tempo que lança a data e hora de forma automática na coluna "T"), gostaria que na coluna "w" abrisse contagem progressiva para enxergar o tempo de análise daquele setor e ao lançar "Recebido" na coluna "U", além de lançar de forma automática a data e hora estático daquele momento, trancasse a contagem progressiva na coluna "w" de forma que também ficasse estático. 

 

-Mesma situação para as colunas "y", "AA" e "AC". 

 

Não gostaria que as funções já existentes, a partir do código que já existe, alterassem. Somente que acrescentasse essas funções citadas acima, se possível.

 

Agradeço a dedicação e atenção direcionada.

 

Att,  

 

Hélio. 

DPO_NOVO FLUXO_ver01..rar

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Confesso que tenho dificuldades para entender as suas longas explicações.

 

Vamos tentar com um exemplo:

em W6 existe uma fórmula que conta tempo, se em U6 for colocado o texto RECEBIDO, então o código irá substituir a fórmula em W6 pelo seu valor. A partir daí, o que mais você quer que seja feito ?

Link para o comentário
Compartilhar em outros sites

em 04/02/2020 às 18:04, osvaldomp disse:

confesso que tenho dificuldades para entender as suas longas explicações.

 

vamos tentar com um exemplo:

em w6 existe uma fórmula que conta tempo, se em u6 for colocado o texto recebido, então o código irá substituir a fórmula em w6 pelo seu valor. a partir daí, o que mais você quer que seja feito ?

@osvaldomp

 

vamos lá.. simplificando, também poderia ser assim:

 

em "w6"...

 

se "s6" for igual a "encaminhado" aplicar esta formula:

 

=se([@[enc. para análise da fiscalização ]]="";"";seerro(se(minuto(mod($d$2-[enc. para análise da fiscalização ];1))=0;int($d$2-[enc. para análise da fiscalização ])&" dia(s) e "&hora(mod($d$2-[enc. para análise da fiscalização ];1))&" hora(s)";int($d$2-[enc. para análise da fiscalização ])&" dia(s), "&hora(mod($d$2-[enc. para análise da fiscalização ];1))&" hora e "&minuto(mod($d$2-[enc. para análise da fiscalização ];1))&" minuto(s)");""))

 

se "u6" for igual a "recebido" aplicar esta fórmula:

 

=se([término da análise da fiscalização]="";"";seerro(se(minuto(mod([término da análise da fiscalização]-[enc. para análise da fiscalização];1))=0;int([término da análise da fiscalização]-[enc. para análise da fiscalização])&" dia(s) e "&hora(mod([término da análise da fiscalização]-[enc. para análise da fiscalização];1))&" hora(s)";int([término da análise da fiscalização]-[enc. para análise da fiscalização])&" dia(s), "&hora(mod([término da análise da fiscalização]-[enc. para análise da fiscalização];1))&" hora e "&minuto(mod([término da análise da fiscalização]-[enc. para análise da fiscalização];1))&" minuto(s)");""))

 

tem como unir essas duas fórmulas para coluna "w"? 

Link para o comentário
Compartilhar em outros sites

  • Solução
private sub worksheet_change(byval target as range)
 if target.count > 1 then exit sub
 if target.column = 19 and target.row >= 6 and ucase(target.value) = "encaminhado" then
  cells(target.row, "w").formulalocal = _
  "=se([@[enc. para análise da fiscalização ]]="""";"""";seerro(se(minuto(mod($d$2-[@[enc. para análise da fiscalização ]];1))=0;int($d$2-[@[enc. para análise da fiscalização ]])&"" dia(s) e ""&hora(mod($d$2-[@[enc. para análise da fiscalização ]];1))&"" hora(s)"";int($d$2-[@[enc. para análise da fiscalização ]])&"" dia(s), ""&hora(mod($d$2-[@[enc. para análise da fiscalização ]];1))&"" hora e ""&minuto(mod($d$2-[@[enc. para análise da fiscalização ]];1))&"" minuto(s)"");""""))"
 elseif target.column = 21 and target.row >= 6 and ucase(target.value) = "recebido" then
  cells(target.row, "w").formulalocal = _
  "=se([@[término da análise da fiscalização ]]="""";"""";seerro(se(minuto(mod([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]];1))=0;int([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]])&"" dia(s) e ""&hora(mod([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]];1))&"" hora(s)"";int([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]])&"" dia(s), ""&hora(mod([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]];1))&"" hora e ""&minuto(mod([@[término da análise da fiscalização ]]-[@[enc. para análise da fiscalização ]];1))&"" minuto(s)"");""""))"
 end if
end sub

funcionamento

1. ao inserir "encaminhado" (aceita minúsculas, maiúsculas, primeira maiúscula, ...) na coluna s o código colocará a primeira fórmula do post #7 na coluna w, mesma linha

2. ao inserir "recebido" (idem item 1) na coluna u o código colocará a segunda fórmula do post #7 na coluna w, mesma linha

 

obs. como este fórum continua com o velho problema de transformar todo o texto do post em minúsculas :priv: será preciso alterar no código os textos "encaminhado" e "recebido"  e escrevê-los em maiúsculas após colar uma cópia do código no módulo da planilha

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...