Somar Dias sem contar com os Feriados, os Sábados e os Domingos
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Marcos :
Bom dia!
Gostaria de saber como programar a entrega de um pedido para daqui a dez dias úteis, ou seja, sem contar com os feriados, os sábados e os domingos.
Grato
Suporte:
Marcos, vamos supor que você tenha os campos DataLançamento e DataEntrega.
No evento "Após atualizar" do campo DataLançamento, coloque:
Faça o login aqui para ter acesso ao código.
Observe que você terá que criar a função fncFeriado(). Para efeito apenas didático, veja esta função que simula uma data de feriado.
Private Function fncFeriado(dta As Date) As Boolean fncFeriado = dta = #6/4/2015# End Function
Sobre a montagem da função feriado, você encontra disponível AQUI, neste meu artigo:
Ao entrar com a data de lançamento 03/06/2015, você terá como resultado, a data de entrega no dia 18/06/2015. Confere ?
Usuário Marcos :
Preciso dizer que funcionou perfeitamente!
Mais uma vez obrigado, Avelino!
9 comentário(s) Ivan Gouveia 26/12/2023 12:55:28 Mestre, como faço para mostrar em um relatorio ou na tela para o usuário as datas, ou seja, listar de DataLançamento á DataEntrega, contando as uteis ou seila algo parecido. qual seria a função? ou uma ideia para fazer isso ? onde armazenaria sem precisar criar tabela ? Francisco Ferreira de Avila 05/10/2023 07:22:33 Professor Avelino. Há um ano que eu procurava essa solução, somar uma quantidade de dias úteis a uma data e me retornar a data futura, vi algumas só, que muito complicadas. Eu com meus 72 anos não conseguia adaptar à minha necessidade. O Seu material é excelente e sua didática é fantástica e objetiva, Parabéns! Francisco Ferreira de Avila 04/10/2023 11:55:45 Professor Avelino! Que maravilha, fantástico. Coloquei no campo do formulário "DtaInicio_ Exec_Etapa" o evento "Após atualizar" o código e ajustei à minha finalidade, com a função fncFeriado() deu certo. Retornou no Campo DtaFim_Exec_Etapa a data de finalização. Trabalho com Cronograma de obra, a obra é dividida em 21 Etapas, cada etapa tem prazo em dias uteis para execução que variam de 3 a 40 dias. por exemplo: a Etapa Fundação o prazo para execução são 10 dias úteis, usei ela. DtaInicio Exec_Etapa = 02/02/2022 retono DtaFim_Exec_Etapa = 16/02/2022 Marcela 18/11/2020 08:24:18 Deu certo! Mto obrigada!!!! Avelino Sampaio 15/11/2020 09:09:21 Marcela ... Do While Not j > me!SuaCaixaNumeroDeDias - 1 ... Marcela 15/11/2020 06:32:43 explico: me servirá para contar prazos processuais Marcela 15/11/2020 06:30:12 Agora que vi que a função só soma 10 dias úteis. rsrsr teria como ensinar a somar o número de dias úteis que eu informasse numa cx de texto? Avelino Sampaio 14/11/2020 00:52:21 Marcela, se pretende utilizar uma tabela, basta usar a função Dcount() para pesquisar se a data existe na tabela. Algo assim: ... If Dcount("*","NomeDaTabelaFeriado","DataFeriado = #" & Format(dtaAnalisada, "mm/dd/yyyy") & "#") =0 Then ... Sucesso! Marcela 13/11/2020 18:15:55 Não entendi a parte de criar a função fncFeriado(). Teria como mostrar como faz pra essa função olhar se a data está listada numa tabela que eu criaria com os feriados? E desconsiderar essa dia no cálculo da data final |