utilização de IF/Th...
 
Notifications
Clear all

utilização de IF/Then para envio de e-mails

12 Posts
4 Usuários
0 Reactions
2,459 Visualizações
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Pessoal, boa noite!

Estou tentando terminar de criar meu codigo, e meu problema é o seguinte: quero criar uma condicao onde, se eu selecionar o Idioma "PT" na minha planilha (Coluna H),a macro deve rodar para enviar o e-mail em portugues, caso eu seleciona o idioma "EN", a macro deve gerar o texto em ingles. Poderiam me ajudar, por favor? Os textos já estão dentro da macro enviada no anexo.

Obrigada!
Mariana

 
Postado : 12/06/2017 3:48 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Ola, veja se é isso.

Click em se a resposta foi util!

 
Postado : 12/06/2017 4:47 pm
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Olá, Basole, não funcionou, os dois e-mails foram gerados apenas em inglês, mesmo que na celula H2 esteja constando "PT" para puxar o texto em portugues...

Valeu!

 
Postado : 13/06/2017 6:27 am
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Ola,

Alguem coonseguiria me ajudar com isso, por favor?

Valeu!!! :)

 
Postado : 19/06/2017 7:52 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Experimente mudar as linhas abaixo para io interior do Loop:
'atualiza o valor dos nomes para a proxima linha
Name = Sheets("Base").Range("C" & Lin)
idioma = Sheets("Base").Range("H" & Lin)

atual

 Do While Name <> ""
    
    'atualiza o valor dos nomes para a proxima linha
    Name = Sheets("Base").Range("C" & Lin)
    idioma = Sheets("Base").Range("H" & Lin)
    
    'laço para pegar cada um dos destinatários da coluna B, começando da linha 2
    For i = 2 To Ultimalinha

    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

mude conforme abaixo

 Do While Name <> ""
   
    'laço para pegar cada um dos destinatários da coluna B, começando da linha 2
    For i = 2 To Ultimalinha
     'atualiza o valor dos nomes para a proxima linha
     Name = Sheets("Base").Range("C" & Lin)
     idioma = Sheets("Base").Range("H" & Lin)

    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

Osvaldo

 
Postado : 19/06/2017 8:31 am
felipemazz
(@felipemazz)
Posts: 59
Trusted Member
 

Àmigo, é bem simples.
O

    Name = Sheets("Base").Range("C" & Lin)
    idioma = Sheets("Base").Range("H" & Lin)

Esta parte do código deveria estar dentro do i = 2 to UltimaLinha.

Se não ele irá verificar sempre a mesma célula.

Tente usar o do until ao invés do i = 2 também. Por algum motivo tive problemas para enviar e-mails utilizando o for, e quando troquei para o Do, meu pc enviou os e-mails sem erros (pode ser coincidencia, internet nao funcionando, etc, mas resolveu pra mim hahaha)

 
Postado : 19/06/2017 8:54 am
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Puxa, funcionou! Obrigada, galera!
Agora sendo ainda mais detalhista, existe alguma forma de, ao digitar o "sobrenome, nome" tanto da coluna "B" quanto quanto da "G" , que o primeiro nome da coluna C e o e-mail da coluna E e G sejam gerados sem eu precisar ficar copiando a formula para a linha de baixo manualmente?

Valeus!!!

 
Postado : 20/06/2017 12:50 pm
felipemazz
(@felipemazz)
Posts: 59
Trusted Member
 

Mariana, nao entendi sua pergunta infelizmente.
Pode explicar melhor?

 
Postado : 20/06/2017 3:39 pm
(@osvaldomp)
Posts: 858
Prominent Member
 

Cole o código abaixo no módulo da planilha. A propósito, sugiro que você mude o código que envia e-mail, que está no módulo da planilha, para um módulo comum (menu Inserir / Módulo).

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column = 2 Then
  Target.Offset(, 1).FormulaR1C1 = "=IFERROR(RIGHT(RC[-1],LEN(RC[-1])-FIND(""*"",SUBSTITUTE(RC[-1],"" "",""*"",LEN(RC[-1])-LEN(SUBSTITUTE(RC[-1],"" "",""""))))),"" "")"
  Target.Offset(, 2).FormulaR1C1 = "=CONCATENATE(SUBSTITUTE(RC[-2],"", "","".""),""@bcg.com"")"
 ElseIf Target.Column = 6 Then
  Target.Offset(, 1).FormulaR1C1 = "=CONCATENATE(SUBSTITUTE(RC[-1],"", "","".""),""@bcg.com"")"
 End If
End Sub

Osvaldo

 
Postado : 20/06/2017 4:32 pm
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Oi Osvaldo,

Valeuzasso pela resposta...Só teve um probleminha...quando eu digito o dado, o codigo funciona, a formula é copiada para baixo e tal, o que é demais! Mas eu normalmente copio e colo os nomes nessa coluna de outro material, e na hora de copiar e colar, a macro não funciona... Será que preciso alterar alguma coisa no código, por favor?

Obrigada mais uma vez pela ajuda :)

Abs.,
Mariana

 
Postado : 21/06/2017 10:14 am
(@marianapd)
Posts: 48
Eminent Member
Topic starter
 

Oi Felipe,

O Osvaldo acabou conseguindo me ajudar, mas agradeço muito pela força :)

Abs.,
Mariana

 
Postado : 21/06/2017 10:18 am
(@osvaldomp)
Posts: 858
Prominent Member
 

Olá, Mariana.

O código funciona também para a colagem mas de apenas uma célula por vez, pois eu coloquei um comando no código que impõe essa limitação para evitar travamentos em algumas situações.

Se você precisa/quer colar em blocos (várias células de uma vez) podemos alterar o código para funcionar nessa situação. Informe em quais colunas você pretende colar.

Osvaldo

 
Postado : 21/06/2017 10:55 am