Envoi email a plusieurs adresses dans des colonnes specifiques
bonjour!
Je veux envoyer un email à plusieurs adresses email en copie cachée (Bcc).
Les adresses email se trouvent dans les colonnes K,M,O,Q,S,U,W,Y,AA (il n'y a pas toujours 10 adresses email. parfois moins)
toutes les données de l'email sont prises d'une seule ligne à la fois, toujours la dernière inscrite dans le tableau.
Voila le morceau de code que j'ai essayé d'adapter pour la macro d'envoi...
si quelqu'un peut aider..
Merci d'avance!!!
ligne = Application.Match(pnr, Sheets("Sheet1").Range("A:A"), 0)
Dim MonOutlook As Object
Dim MonMessage As Object
Dim EmailTo As String
With Worksheets("Sheet1")
EmailTo = Join(Application.Transpose(.Range("K" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("M" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("O" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("Q" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("S" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("U" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("W" & ligne).Value), ";") & ";"
EmailTo = EmailTo & Join(Application.Transpose(.Range("Y" & ligne).Value), ";") & ";"
EmailTo = EmailTo & .Range("AA").Value
End With
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.CreateItem(0)
MonMessage.To = ""
MonMessage.Cc = ""
MonMessage.Bcc = EmailTo
MonMessage.Subject = "Rate request" & " " & "for" & " " & ThisWorkbook.Sheets("Sheet1").Range("B" & ligne)
MonMessage.body = "Hello,"
Chr (13) & Chr(13) & "Please send me rate for" & " " & ThisWorkbook.Sheets("Sheet1").Range("G" & ligne) & " " & "rooms on basis" & " " & ThisWorkbook.Sheets("Sheet1").Range("H" & ligne) & _
Chr(13) & Chr(13) & "in hotel:" & " " & ThisWorkbook.Sheets("Sheet1").Range("J" & ligne) & _
Chr(13) & Chr(13) & "for the period" & " " & ThisWorkbook.Sheets("suivi").Range("C" & ligne) & " " & ThisWorkbook.Sheets("Sheet1").Range("D" & ligne) & _
Chr(13) & Chr(13) & "Thank you!" & _
Chr(13) & Chr(13) & Application.UserName & " " & "-" & " " & "x Tours"
MonMessage.Display
**********************
Seconde question:
dans ce même fichier j'ai un formulaire dans lequel je choisis plusieurs hêtels (jusqu'à 10 hôtels).
chaque macro Combo contiendra une liste de 100 (!) hôtels
Après l'envoi du formulaire, chaque hôtel choisi apparaitra dans la case correspondante du tableau:
exemple: valeur combohotel1 = colonne J, valeur combohotel2 = colonne L etc
Y a-t-il un moyen de faire plus simple que d'écrire dans la macro du combo les 100 noms d'hôtels, et ensuite faire copier coller 10 fois ??
Merci!!
Bonjour,
essayer avec,
With Worksheets("Sheet1")
EmailTo = .Range("K" & ligne) & ";" & .Range("M" & ligne) & ";" & .Range("O" & ligne) 'etc...
End WithCa ne fonctionne pas.
cette ligne de code apparait en jaune...
Bonjour,
C'est sans doute ton .Range("AA").Value qui est en cause !
bon, voila j'ai réussis à arranger un peu mais j'ai découvert un problème:
Je réussis à ouvrir un email avec un texte et les différentes addresses email en Bcc.
Mais en fait je voudrais que le mail s'ouvre avec un hôtel à la fois, et que dans le corps du mail seul le nom de l'hôtel change.
Par exemple, s'il est envoyé au Hilton, alors dans le corps, ce sera "Hilton"... Le reste de l'email ne change pas.
Dans le tableau il se peu qu'il y ait jusqu'à 10 hôtels dans la ligne choisie, avec 10 emails. J'ai donc besoin que la macro d'envoi d'email se répète jusqu'à ce qu'il n'y ait plus d'adresses emails inscrites dans cette même ligne. (NB: les adresses emails sont dans les colonnes cachées)
Ma seconde question est : comment puis-je changer et faire en sorte que le numéro de ligne d'après lequel la macro puise ses informations soit non pas le numéro inscrit dans la colonne AC mais tout simplement le numéro de ligne de défaut de l'onglet (à gauche) ?
Je sais que ce n'est pas très clair, je joins donc le fichier en exemple , vous comprendrez mieux!
Merci merci pour tout!