IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insertion image JPG dans le corps du mail outlook - Via Macro Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Insertion image JPG dans le corps du mail outlook - Via Macro Excel
    Bonjour à tous !

    Je post aujourd'hui, car je suis à la recherche d'une solution qui me permettrait d'insérer 1 à 2 images JPG dans le corps de mon mail, générer par macro excel.
    J'ai déjà pas mal avancé sur le codage du mail, sur la sélection des diverses adresses mails, sur la création d'un mail personnalisé etc...

    Je vous joins ci-dessous la macro que j'ai créé. Si vous avez des conseils ou des avis, ils sont évidemment les bienvenus
    J'ai précisé en rouge les lignes concernées, que je n'arrive pas à coder.
    En sachant que lorsque je les retires, la macro fonctionne sans aucun problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub SendEmail(What_adress As String, subject_line As String, mail_body As String)
     
    Dim olApp As Outlook.Application
    Set olApp = CreateObject("Outlook.Application")
    Dim Mon_pdf As String
     
        Dim olMail As Outlook.MailItem
        Set olMail = olApp.CreateItem(olMailItem)
        Set ColAttach = Obj.Mail.Attachments
        Set oAttach = ColAttach.Add("C:\Image1.jpg")
        Set ObjOutlook = New Outlook.Application
     
        olMail.To = What_adress
        olMail.Subject = subject_line
        olMail.BodyFormat = olFormatHTML
        olMail.HTMLBody = mail_body
        olMail.HTMLBody = IMG = cid: Image1.jpg
     
        olMail.Attachments.Add ("C:\Doc.PJ.pdf")
        olMail.Send
     
     
    End Sub
    __________________________________________________________________________________
    Sub SendMassEmail()
     
    row_number = 1
     
    Do
    DoEvents
      row_number = row_number + 1
      Dim mail_body_message As String
      Dim full_name As String
      Dim promo_code As String
     
      mail_body_message = Feuil1.Range("J2")
      full_name = Feuil1.Range("B" & row_number) & " " & Feuil1.Range("C" & row_number)
      promo_code = Feuil1.Range("D" & row_number)
      mail_body_message = Replace(mail_body_message, "replace_name_here", full_name)
      mail_body_message = Replace(mail_body_message, "promo_code_replace", promo_code)
     
      Call SendEmail(Feuil1.Range("A" & row_number), "Doc.PJ", mail_body_message)
    Loop Until row_number = "4"
     
    MsgBox "Congratulations, eMailing Completed"
     
    End Sub
    Merci à tous

    Papt18

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Je pense que l'erreur provient de cette ligne.
    Il manque des guillemets.
    J'ai aussi ajouté l'autre variable (mail_body) qui ne semble rien contenir, mais au cas où...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    olMail.HTMLBody = mail_body & "IMG = cid: Image1.jpg"
    Note: quand tu mets du code, sélectionne-le et utilise le bouton # pour le formater
    MPi²

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci pour ta réponse rapide ! Malheureusement, ça n'a pas fonctionné...
    Je suppose que mes SET et DIM sont fausses.

    je vais essayé d'expliquer un peu plus en détails ce que je cherche à faire, peut être que tu auras une idée.
    Déjà, et c'est important à préciser je pense, mon "mail_body" est sur ma feuil1 excel, au format HTML. J'y fais référence dans la seconde partie de la macro. Et le nom de mes clients y est automatiquement remplacé.

    Ce que je souhaite faire, c'est d'afficher dans ce dit mail, 2 images tout simplement.
    La première contient un image illustratrice, la seconde correspond au logo de ma société.
    J'ai réussi à les intégrer sur le mail body:
    (<p align="center"><img src="C:\Logo+slogan.jpg" align="center"></p>) faisant directement référence à l'emplacement de l'image sur mon DD. Mais lors de la phase test, j'ai été le seul à pouvoir les voir, personne d'autre ne le pouvait.


    Du coup je me dis que peut-être ça serait possible via la macro ?
    OU
    Peut-être dois-je uploader les images sur internet et y faire référence via un URL ?
    OU
    Une autre idée encore serait de créer une signature spécifique pour cette envoi, et d'y faire référence dans la macro ?


    L'objectif final, est de pouvoir relancer ma base client avec mes nouvelles offres de produit.
    1 mail après l'autre.


    J'ai retiré les lignes qui me mettait en débogage. Cette macro ci-dessous fonctionne, mais sans image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub SendEmail(What_adress As String, subject_line As String, mail_body As String)
    
    Dim olApp As Outlook.Application
    Set olApp = CreateObject("Outlook.Application")
    Dim Mon_pdf As String
        
        Dim olMail As Outlook.MailItem
        Set olMail = olApp.CreateItem(olMailItem)
        Set ObjOutlook = New Outlook.Application
        
        olMail.To = What_adress
        olMail.Subject = subject_line
        olMail.BodyFormat = olFormatHTML
        olMail.HTMLBody = mail_body
        olMail.Attachments.Add ("C:\plaquette commerciale 2016.compressed.pdf")
        olMail.Send
        
        
    End Sub
    Sub SendMassEmail()
    
    row_number = 1
    
    Do
    DoEvents
      row_number = row_number + 1
      Dim mail_body_message As String
      Dim full_name As String
      Dim promo_code As String
      
      mail_body_message = Feuil1.Range("J2")
      full_name = Feuil1.Range("B" & row_number) & " " & Feuil1.Range("C" & row_number)
      promo_code = Feuil1.Range("D" & row_number)
      mail_body_message = Replace(mail_body_message, "replace_name_here", full_name)
      mail_body_message = Replace(mail_body_message, "promo_code_replace", promo_code)
        
      Call SendEmail(Feuil1.Range("A" & row_number), "SUJET MAIL", mail_body_message)
    Loop Until row_number = 2
    
    MsgBox "Congratulations, eMailing Completed"
    
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Essaie en déclarant tout en Object.
    Tu pourras alors enlever ta référence à Outlook en utilisant CreateObject

    Voici un exemple que j'avais fait.
    Change le nom de l'image en fonction de la tienne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
        Dim objOL As Object, ObjMail As Object
        Dim oAttach As Object, ColAttach As Object
        
        Set objOL = CreateObject("Outlook.Application")
        Set ObjMail = objOL.CreateItem(0)
        Set ColAttach = ObjMail.attachments
        Set oAttach = ColAttach.Add("C:\MonImage.jpg") 'Changer le chemin et le nom de l'image
        
        With ObjMail
            .to = Cells(8, 11)
            .CC = Cells(9, 11)
            .Subject = Cells(7, 11) & "Test" & Cells(7, 3)
            .HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & _
                "Bonjour, <br><br><IMG src=cid:MonImage.jpg></BODY>"   'Nom de l'image sans chemin
            .Save
            .Display    'Send   Display permet d'afficher le message, Send l'envoie sans affichage
        End With
         
        Set oAttach = Nothing
        Set ColAttach = Nothing
        Set ObjMail = Nothing
        Set objOL = Nothing
    Pour ce qui est du logo, la création d'une signature serait bien.
    Tu n'aurais qu'à faire un .Display au début et inclure celle-ci dans ton Body

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .Display  ' va mettre ta signature
    ....
    .HTMLBody = "Le message..." & .HTMLBody  'ton message en plus de la signature
    ....
    .Send ' ou .Display
    MPi²

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut Parmi,

    merci pour ta réponse.
    N'arrivant pas à bien conditionner ma macro pour intégrer une image, j'ai opté pour la solution numéro 2.
    A savoir : intégrer une signature mail comprenant le logo.

    Disposes-tu, dans ta botte secrète, d'une insertion automatique de signature qui m'éviterait d'avoir à cliquer 750 fois par semaine sur signature > insertion etc ...

    merci d'avance

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Comme je disais dans mon précédent message, le fait d'écrire .Display ajoute ta signature.
    Mais quand tu inscris le .HTMLBody, tu dois ajouter cette signature qui fais partie du body (concaténation du body)
    MPi²

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/07/2013, 14h19
  2. Envoyer un mail avec une image dans le corps du mail
    Par tkoprowski dans le forum Android
    Réponses: 1
    Dernier message: 24/08/2011, 17h03
  3. [XL-2003] Envoi mail Outlook via VBA Excel erreur
    Par altra dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/08/2009, 16h50
  4. envoi mail automatique via macro excel
    Par ellewided dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 14/08/2009, 10h10
  5. [Lotus Notes] insertion d'un tableau dans le corps du mail
    Par Jean-Philippe André dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/09/2008, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo