Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Atribuir um Status com base no valor de duas datas em uma listview

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Olá pessoal.

Sou novo por aqui e muito leigo no assunto. Tudo que consegui até agora foi assistindo vídeos no Youtube e lendo matérias em fóruns. Não encontrei nada específico, então, resolvi escrever.

Tenho uma planilha de cadastro que possui duas colunas: Data de início de vigência e data de final de vigência. A diferença entre elas é de 3 anos.
Por meio de formatação condicional, consigo que o Excel me dê o status da vigência: Se até a data atual o documento estiver vigente, o Excel me retorna com "VIGENTE"; Se, com base na data atual, o documento estiver vencido, o Excel me retorna com "VENCIDO".
Essas informações são carregadas para uma listview. Acontece que a planilha possui muitos registros e está se tornando pesada para carregar.
Existiria alguma maneira, através de VBA, de realizar essa análise de diferença entra as duas datas e o retorno com o STATUS sem utilizar fórmulas na planilha?

Se ficar difícil de entender, me avisem que dou mais informações.

Obrigado desde já pela ajuda!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Reinaldo »

Possível, em principio é, porem e preciso conhecer sua estrutura e distribuição de dados; modelo representativo de sua planilha, dados fictícios se necessário, com algo em torno de uns 50 registros para teste;
bem como descrever/mostrar como é hoje (formulas/condicional/etc..), e o que espera ter/quando.
Somente a condicional, que eu saiba não e motivo para a lentidão/demora informada


Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Obrigado pelo retorno.

A formatação condicional em si, de fato, não é o problema.
O problemas, creio, está nas fórmulas e funções usadas.

Com o aumento dos registros, a planilha vai se tornando lenta.
Assim, sendo esse o problema ou não, a ideia é partir logo pro VBA.

A listview tem 3 colunas: Data inicial | Data final | Status

A data inicial e a final são carregadas da planilha.

O que quero é uma fórmula que preencha, na própria listview, o status de acordo com o valor de Data Final em relação a data de Hoje.

Se a data final for igual ou anterior a hoje, o status seria "VIGENTE"

Se a data final for superior a hoje, o status seria "RENOVAR"

O código seria executado toda vez que a listview fosse exibida.

Conseguiu entender?

EDIT

Estou anexando a planilha para análise. Ela está sem as fórmulas, funções. Creio que seja suficiente para ajudar a entender o que pretendo.

https://drive.google.com/file/d/1yt85to ... sp=sharing


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Reinaldo »

Entender ja havia entendido, precisava saber quando/onde.
voçe menciona ".. listview tem 3 colunas: Data inicial | Data final | Status..."
Bem a unica listview (que localizei)do modelo (frm.Pesquisa) enviado tem muito mais colunas e não tem data inicial.
"..Nome, DC50, Vencimento, Status, Email, Telefone, Funções, Documentos, Observações..."
Supondo que seja essa; e pela forma de "preenchimento", uma maneira seria:
Alterar a linha:

Código: Selecionar todos

Status = .Cells(linha, 5).Value
Para:

Código: Selecionar todos

If CDate(Vencimento) >= Date Then
    Status = "Vigente"
Else
    Status = "Renovar"
End If


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Reginaldo, muito obrigado pela ajuda.

De fato, eu estava trabalhando em uma tabela "teste" para, por fim, implementar na tabela fina (a que compartilhei). Por isso, a descrição que fiz ficou diferente daquilo que efetivamente encontrou na tabela compartilhada.

Parece que o código funcionou perfeitamente.

A dúvida é: A medida que o tempo passar, o status da será atualizado?

Por exemplo: Hoje, realizei um registro cuja data de vencimento é 13/07/2019. Logo, o status é "VIGENTE".
No dia 14/07/2019, quando acessar a listview, este registro já estará vencido e, portanto, seu status deverá ser "RENOVAR".

O código que apresentou fará essa leitura?

Obrigado.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Reinaldo »

A coluna status é calculada, a cada abertura/carregamento do formulário/listview, portanto deverá apresentar essa "revisão"


Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Muito obrigado Reginaldo!

Ficou perfeito.


Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Aproveitando o post, fiz mais algumas implementações na planilha.

A dúvida agora é com respeito a impressão: Quando seleciono o item que desejo imprimir e clico no botão "Imprimir", a tela com as opções de impressão é exibida no fundo do userform, deixando o arquivo "congelado". Alguém poderia me ajudar com situação?

Segue link do arquivo: https://drive.google.com/file/d/1MEU5sv ... sp=sharing


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Reinaldo »

Bem sua duvida atual não tem nada haver como o titulo do post; assim creio que o ideal seria abertura de um novo post; mas...
Porque precisa do printPreview?
Porque não utiliza somente o print?


Diego Shimizu
Colaborador
Colaborador
Mensagens: 12
Registrado em: Sex Jul 12, 2019 2:44 pm

Re: Atribuir um Status com base no valor de duas datas em uma listview

Mensagem por Diego Shimizu »

Obrigado Reginaldo.

Abri um novo tópico: https://www.tomasvasquez.com.br/forum/v ... =20&t=7160

Agradeço se puder me ajudar.

A ideia de usar o printview é poder pré visualizar o arquivo antes da impressão. O mesmo pode ser feito com o print? (Se desejar, pode responder no novo tópico...)


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder