[Excel | VBA] Envoie de Mail à plusieurs destinataires via Outlook

Résolu
AiDuK Messages postés 80 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 30 juillet 2008 - 16 juil. 2008 à 14:01
AiDuK Messages postés 80 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 30 juillet 2008 - 16 juil. 2008 à 16:05
Bonjour à tous,

Mon code actuel me permet d'envoyer un mail, ainsi qu'une pièce jointe à un destinataire.
Ce que je souhaite à ajouter et d'envoyer le même mail à un ou plusieurs destinataire en fonction de plusieurs checkbox ( une par destinataire ). Si la Checkbox est cochée, alors l'adresse liée fait partie des destinataire.

Mon code actuel :

Sub Envoyer()

   Dim ol As New Outlook.Application
   Dim olmail As MailItem
   Dim CurrFile As String
   Dim No As String
  
   No = Workbooks("GestionFIQ.xls").Sheets("FIQ").Range("Y2").Value


   Set ol = New Outlook.Application
   Set olmail = ol.CreateItem(olMailItem)
   With olmail
      .To = Sheets("Présentation").Range("E247").Value
      .To = Sheets("Présentation").Range("E248").Value
      .Subject = "FIQ N° " & No & ""
      .Body = Sheets("Présentation").Range("D247").Value
      .Attachments.Add "C:\Documents and Settings\fx.marette\Mes documents\TestSVG\FIQ N° " & No & ".xls"
      .Send

   End With
End Sub

En gros , pour l'exemple, je vais expliquer avec 3 destinataires.
Dans la cellule A1, l'adresse mail du premier destinataire,
A2, l'adresse mail du deuxième destinataire,
A3, l'adresse mail du troisième destinataire.

A coté 3 checkox ( checkbox1, checkbox2, et checkbox3) chacune liée aux différents destinataires.

Je souhaite faire en sorte que si la checkbox1, et la checkbox2 sont cochées alors lorsque l'on envoie le mail, ca ne l'envoie qu'au 2 premiers destinataires.

Ainsi si la checkbox1, et la checkbox3 sont cochées, cela ne l'envoie qu'au 1er et au 3ème destinataire.

Est ce possible ?
Quelqu'un peut il m'aider s'il vous plait ?

Merci d'avance,

AiDuK

2 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
16 juil. 2008 à 15:44
Quand tu envois par Outlook un mail, les destinataires sont séparés par des ";", il te faut donc faire la même chose.

Tu remplaces dans ton code la ligne
.To = Sheets("Présentation").Range("E247").Value
qui te sert à rentrer UN destinataire par
.To = ListeDestinataires
où ListeDestinataires est une variable de type String.

Et avant d'exécuter ton code d'envoi du mail, tu alimentes ta variable en vérifiant toutes tes CheckBox
Pour ton exemple, ça donnerait un truc du genre :
ListeDestinataires = ""
if Checkbox1.value = true then
   ListeDestinataires = ListeDestinataires & ";" & range("A1").Value
end if
if Checkbox2.value = true then
   ListeDestinataires = ListeDestinataires & ";" & range("A2").Value
end if
if Checkbox3.value = true then
   ListeDestinataires = ListeDestinataires & ";" & range("A3").Value
end if

Et pour finir, enlever le 1er caractère qui sera un ";" :
ListeDestinataires = right(ListeDestinataires, len(ListeDestinataires)-1)

C'est pour le principe de fonctionnement, après, en fonction de ton nb de CheckBox et de tes besoins, peut être créer une fonction au lieu d'une succession de if, etc ...
Mais avec ça, tu devrais pouvoir t'en sortir ^^

Molenn
3
AiDuK Messages postés 80 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 30 juillet 2008
16 juil. 2008 à 16:05
Parfait , merci beaucoup pour tout
0
Rejoignez-nous