XL 2016 Envoi mail depuis liste déroulante

Dero

XLDnaute Nouveau
Bonjour à tous,

Je sollicite très régulièrement ce forum pour m'aider sur de petits sujets.
Aujourd'hui je bloque sur un sujet et j'ai beau creuser et faire des tests, rien ne fonctionne. C'est pour cela que je me permets d'ouvrir un sujet, afin d'avoir votre aide.

Pour expliquer mon problème :

Vous trouverez dans cette pièce jointe, 3 onglets (feuille de prêt / mail type / liste).
Dans l'onglet "mail type", lorsque je sélectionne mon code en cellule B5, une RECHERCHEV va récupérer les données en cellules D5, E5, B7 et E6. C'est cette dernière qui me pose problème...

Ce que je souhaiterai faire, si possible, la cellule E6 renvoi à une adresse mail qui se trouve dans l'onglet "liste".
Je souhaiterai donc, lorsque je sélectionne mon code en B5, je puisse cliquer sur l'adresse mail en E6 qui se mettra à jour et que OUTLOOK s'ouvre automatiquement pour écrire à cette adresse mail, avec en corps de message les lignes 15 à 33.

J'espère avoir été clair et remercie d'avance pour votre aide.
Je bloque sur ce sujet depuis quelques jours...

Un grand merci pour votre aide :)
 

Pièces jointes

  • Liste Test.xlsm
    32.6 KB · Affichages: 4
C

Compte Supprimé 979

Guest
Bonjour Dero,

Le titre de votre demande n'est pas correcte à mes yeux, je suis passé bon nombre de fois à côté de votre sujet :confused:
"Envoi mail après modification valeur d'une liste" serait plus approprié

Voici une possibilité à adapter selon vos souhaits
VB:
Sub EnvoiMailAvecPlage()
  Dim DirTmp As String, sData As String
  Dim Fso As Object, Rng As Range
  Dim OutObj As Object, eMail As Object, StrHTML As String
  Dim Dest As String, Signature As String
  ' Chemin et nom du fichier HTML temporaire
  DirTmp = Environ("USERPROFILE") & "\Mail"
  If Dir(DirTmp, vbDirectory) = "" Then MkDir DirTmp
  DirTmp = DirTmp & "\~xLRange.htm"
  ' Avec ce classeur
  With ThisWorkbook
    With .Sheets("mail type")
      ' Définir la plage à exporter
      Set Rng = .Range("A15:E33")
      ' Récupérer le destinataire
      Dest = .Range("E6").Value
    End With
    ' Exporte la plage vers un fichier de type HTML, ceci afin de respecter la mise en page de la plage :
    .PublishObjects.Add(xlSourceRange, DirTmp, Rng.Parent.Name, Rng.Address, 0, "DivID", "").Publish True
  End With
  ' Lecture du fichier HTML qui a été généré par PublishObjects :
  Set Fso = CreateObject("Scripting.FileSystemObject")
  Set oFile = Fso.OpenTextFile(DirTmp, 1, False)
  sData = oFile.ReadAll
  oFile.Close
  Set oFile = Nothing: Set Fso = Nothing
  ' Création d'une instance Outlook pour envoyer un mail
  Set OutObj = CreateObject("Outlook.Application")
  Set eMail = OutObj.CreateItem(0)
  With eMail
    ' Afficher l'objet mail pour avoir la signature
    .Display
    ' Destinataire
    .To = Dest
    ' Mémoriser la signature
    Signature = .HtmlBody
    ' Sujet de l'eMail
    .Subject = "Ceci est le sujet de mon mail"
    ' Corps du message
    .HtmlBody = sData & Signature
  End With
  ' Effacer les variables objet
  Set eMail = Nothing: Set OutObj = Nothing: Set Rng = Nothing
  ' Supprimer le fichier temporaire
  Kill DirTmp
End Sub

A+
 

Discussions similaires

Réponses
2
Affichages
362

Statistiques des forums

Discussions
312 817
Messages
2 092 366
Membres
105 379
dernier inscrit
alboub