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

Encontrar determinados valores em um intervalo usando loop, e executar comando

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
BrunoMotta
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qua Fev 15, 2017 10:37 am

Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por BrunoMotta »

Pessoal bom dia,
Sou novo no fórum, e fã de Tomás. Já aprendi bastante com ele.

Bem, estou precisando de ajuda. Criei uma planilha de controle de licenças aqui no meu trabalho, e meu chefe pediu para criar uma rotina de envio de e-mails, caso seja identificado alguns prazos expirando, como por exemplo:

Se a rotina encontrar valores como 180, 90, 60, e 30 (dias antes do vencimento), envia um e-mail de alerta para o chefe. Aqui na empresa usamos o outlook 365, já tenho o código testado para envio pelo 365, mas preciso criar um rotina com uma condição, que só envie um e-mail de alerta, quando encontrar um ou mais dos valores informados acima (180, 90, 60, 30) na coluna AA.
Tentei fazer uma rotina IF, mas ele envia vários e-mails quando encontra separadamente os valores no mesmo dia.

Para entenderem melhor, estes valores são calculados através da fórmula =DIAS([@[Data prazo legal]];HOJE()), coloquei a planilha para abrir junto com o Windows para funcionar melhor e não deixar passar nenhum dia que ela seja aberta, pois a rotina está executando com "Sub Workbook_Open()"".

Se conseguir criar a rotina de identificação do números na coluna, eu chamo a rotina de envio "Call EnviarEmail".


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.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por srobles »

BrunoMotta,

Isso é relativamente simples, dependendo apenas a disposição dos dados na planilha.
Uma possibilidade, seria você adicionar os dados da linha que tiver a condição verdadeira em outra aba (temporária), e a partir dessa lista enviar o e-mail. Ou adicionar uma observação na respectiva linha, na ultima coluna, exemplo : EXPIRANDO.

Abaixo deixo um exemplo para estudo.

Código: Selecionar todos

Sub validarLicenca()
    With ThisWorkbook.Sheets("Plan1")
        .Activate
        Dim vPrazo As Integer
        Dim ultimaColuna As Integer
        'Retornamos a ultima coluna preenchida e adicionamos +1
        ultimaColuna = .UsedRange.Columns.Count + 1
            'Comparamos o prazo a partir da linha 2 até a ultima preenchida
            For a = 2 To .UsedRange.Rows.Count
                'Armazenamos o prazo da linha atual para compararmos
                vPrazo = Cells(a, "A") 'Aponte aqui a coluna que contém o prazo da licença
                'Se o prazo for menor ou igual a 180
                If vPrazo <= "180" Then
                    'Escrevemos na ultima coluna da linha atual, a palavra "EXPIRANDO"
                    Cells(a, ultimaColuna) = "EXPIRANDO"
                End If
            Next
    End With
End Sub
Abs


Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

Re: Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por Mathmatic »

sr. srobles,

seria possível o senhor adaptar este código sugerido por você, para o mesmo operar somente em células Visíveis ?

tive uma idéia para usá-lo em meu problema, mas precisaria que ele operasse somente em células Visíveis. é possível ?


obrigado por sua atenção.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por srobles »

Mathmatic,

Vou analisar este código e havendo um avanço, te retorno, ok?

Abs


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.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por srobles »

srobles escreveu:Mathmatic,

Vou analisar este código e havendo um avanço, te retorno, ok?

Abs
Mathmatic,

Segue abaixo o código alterado conforme solicitação.

Código: Selecionar todos

Sub validarLicenca()
    With ThisWorkbook.Sheets("Plan1")
        .Activate
        Dim vPrazo As Integer
        Dim ultimaColuna As Integer
        'Retornamos a ultima coluna preenchida.
        ultimaColuna = .UsedRange.Columns.Count 
            'Comparamos o prazo a partir da linha 2 até a ultima preenchida
            For a = 2 To .UsedRange.Rows.Count
                'Armazenamos o prazo da linha atual para compararmos
                vPrazo = Cells(a, "A") 'Aponte aqui a coluna que contém o prazo da licença
                'Se o prazo for menor ou igual a 180 e a linha estiver visível
                If vPrazo <= "180" And Cells(a,"A").EntireRow.Hidden = False Then
                    'Escrevemos na ultima coluna da linha atual, a palavra "EXPIRANDO"
                    Cells(a, ultimaColuna) = "EXPIRANDO"
                End If
            Next
    End With
End Sub
Abs


Mathmatic
Manda bem
Manda bem
Mensagens: 184
Registrado em: Seg Out 24, 2011 1:50 pm

Re: [CONCLUÍDO] Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por Mathmatic »

tópico [CONCLUÍDO].

amigo srobles,

Funcionou perfeito para o que eu desejava.

parabéns mais uma vez e obrigado pela atenção dedicada às minhas dúvidas e necessidades.


até mais .

Abs.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: [CONCLUÍDO] Encontrar determinados valores em um intervalo usando loop, e executar comando

Mensagem por srobles »

Mathmatic escreveu:tópico [CONCLUÍDO].

amigo srobles,

Funcionou perfeito para o que eu desejava.

parabéns mais uma vez e obrigado pela atenção dedicada às minhas dúvidas e necessidades.


até mais .

Abs.
Mathmatic,

Opa, obrigado mais vez pelo feedback meu amigo!

Abs


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