Image dans un mail en VBA sans utiliser Outlook
Résolu/Fermé
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
26 juil. 2016 à 17:14
LEGONZ77 Messages postés 33 Date d'inscription jeudi 11 février 2016 Statut Membre Dernière intervention 2 août 2017 - 1 août 2017 à 13:04
LEGONZ77 Messages postés 33 Date d'inscription jeudi 11 février 2016 Statut Membre Dernière intervention 2 août 2017 - 1 août 2017 à 13:04
A voir également:
- Envoyer un mail en vba excel sans outlook
- Yahoo mail - Accueil - Mail
- Liste déroulante excel - Guide
- Creer adresse mail outlook - Guide
- Mise en forme conditionnelle excel - Guide
- Si et excel - Guide
21 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
27 juil. 2016 à 17:31
27 juil. 2016 à 17:31
J'ai réussi à l'adapter pour avoir l'image dans le corps du message, grâce à ce lien:
https://excel-macro.tutorialhorizon.com/excel-vba-send-unique-images-embedded-to-mail-body-with-every-mail-from-ms-outlook-using-excel/
https://excel-macro.tutorialhorizon.com/excel-vba-send-unique-images-embedded-to-mail-body-with-every-mail-from-ms-outlook-using-excel/
'Après avoir ajouté la référence "Microsoft CDO for Windows 2000 Library" dans l'éditeur VBA Outils- Références Sub mail_en_direct() Const cdoBasic = 1 Dim admail As String, i As Integer Dim messmail As String, secours As String Dim expediteur As String Dim Fichier As Variant Dim chemin As Variant Dim nom As String Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg") chemin = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls") nom = Dir(Fichier) 'nom fichier image expediteur = InputBox("Adresse mail de l'Expéditeur", "ADRESSE ELECTRONIQUE", "monadresse@mail.fr") admail = InputBox("Adresse mail du destinataire", "DESTINATAIRE", "adressedest@mail.fr") messmail = "Bonjour," With CreateObject("CDO.Message") If Err Then secours = MsgBox("Problème de CDO non installé sur le serveur") Exit Sub Else .From = expediteur .To = admail 'destinataire '.Bcc = "" .Subject = "Bonjour" .TextBody = messmail 'http://excel-macro.tutorialhorizon.com/excel-vba-send-unique-images-embedded-to-mail-body-with-every-mail-from-ms-outlook-using-excel/ .HTMLBody = "<html><p>Voici mon image.</p>" & _ "<img src='cid:" & nom & "'" & "width='100' height='100'><br>" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = expediteur .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Update .AddAttachment Fichier 'chemin image jointe .AddAttachment chemin 'chemin classeur joint .Send If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez." End If On Error GoTo 0 End With MsgBox "Message envoyé avec pièces jointes" End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
27 juil. 2016 à 10:37
27 juil. 2016 à 10:37
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
27 juil. 2016 à 11:36
27 juil. 2016 à 11:36
Bonjour,
Merci cs_Le Pivert, enfin une réponse \o/
Par contre, si je décortique le code, on ajoute une image en PJ et non dans le corps du mail si?
Ou je me trompe...
Cordialement.
Merci cs_Le Pivert, enfin une réponse \o/
Par contre, si je décortique le code, on ajoute une image en PJ et non dans le corps du mail si?
Ou je me trompe...
Cordialement.
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 28/07/2016 à 11:16
Modifié par Kuartz le 28/07/2016 à 11:16
Bonjour cs_Le Pivert,
C'est vraiment pas mal, j'arrive déjà à afficher quelque chose dans mon mail.
Seulement j'ai le message :
Ma synthaxe est-elle correcte selon toi?
Le TextBody ne s'affiche pas non plus comme tu peux le remarquer :
Je te remercie en tout cas pour tout le temps passé à m'aider.
Cordialement.
C'est vraiment pas mal, j'arrive déjà à afficher quelque chose dans mon mail.
Seulement j'ai le message
Ma synthaxe est-elle correcte selon toi?
.HTMLBody = "<html><p>Voici mon image.</p><img src='cid:C:\LOGO_AUTOMATE.jpg'width='100' height='100'><br>"
Le TextBody ne s'affiche pas non plus comme tu peux le remarquer :
.TextBody = "Vous trouverez en PJ les indexations gasoil pour les clients vous concernant."
Je te remercie en tout cas pour tout le temps passé à m'aider.
Cordialement.
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
28 juil. 2016 à 15:06
28 juil. 2016 à 15:06
Je viens d'utiliser votre code en faisant un simple copier / coller et là magie, ça fonctionne. Je vais donc tout recoder mon module afin que cela fonctionne. Je pense que ça devrait aller. Je reviens vous donner des nouvelles après. Merci en tout cas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
28 juil. 2016 à 16:35
28 juil. 2016 à 16:35
Nous y sommes !
Ma syntaxe était bonne. Le problème venait tout simplement de la taille de l'image en Octets. (Pas plus de 40Ko).
Merci beaucoup pour l'aide, je n'y serais jamais arrivé sans vous :)
Cordialement.
Ma syntaxe était bonne. Le problème venait tout simplement de la taille de l'image en Octets. (Pas plus de 40Ko).
Merci beaucoup pour l'aide, je n'y serais jamais arrivé sans vous :)
Cordialement.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
28 juil. 2016 à 18:43
28 juil. 2016 à 18:43
En utilisant le code tel quel, on peut mettre toutes les images jpg sans avoir a corriger le code. Il suffit d'ouvrir une image jpg à la demande de l'inputBox!
Mais il faut garder cette ligne de code:
Pour avoir l'image dans le corps du message
Ensuite si l'on ne veut pas envoyer un classeur, on supprime les lignes de code le concernant
Bonne soirée
Mais il faut garder cette ligne de code:
.AddAttachment Fichier 'chemin image jointe
Pour avoir l'image dans le corps du message
Ensuite si l'on ne veut pas envoyer un classeur, on supprime les lignes de code le concernant
Bonne soirée
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
29 juil. 2016 à 11:27
29 juil. 2016 à 11:27
Bonjour cs_Le Pivert,
En réalité, le fichier Excel est en lui-même une tâche automatique exécutée par le serveur tous les 1er de chaque mois. Du coup, aucune interaction avec un utilisateur n'est possible. C'est la raison pour laquelle je n'ai pas utilisé :
Par contre, tu as raison sur le fait qu'il faut absolument avoir la ligne :
Que j'avais effectivement oubliée. J'ai ensuite eu un problème de taille d'image comme je l'ai précisé. En réduisant la taille, tout est OK, l'image s'affiche :)
Merci de ta précieuse aide en tout cas.
A bientôt.
Cordialement.
En réalité, le fichier Excel est en lui-même une tâche automatique exécutée par le serveur tous les 1er de chaque mois. Du coup, aucune interaction avec un utilisateur n'est possible. C'est la raison pour laquelle je n'ai pas utilisé :
Application.GetOpenFilename
Par contre, tu as raison sur le fait qu'il faut absolument avoir la ligne :
.AddAttachment Fichier 'chemin image jointe
Que j'avais effectivement oubliée. J'ai ensuite eu un problème de taille d'image comme je l'ai précisé. En réduisant la taille, tout est OK, l'image s'affiche :)
Merci de ta précieuse aide en tout cas.
A bientôt.
Cordialement.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
29 juil. 2016 à 11:35
29 juil. 2016 à 11:35
Tu n'es pas obligé de te servir de l'inputBox, il suffit de le remplacer par:
Et ensuite tu te sers de cela:
j'ai fait cela exprès pour qu'il n'y est pas de chemin en dur dans le code HTML!
Fichier = "C:\Chemin du fichier.jpg" nom = Dir(Fichier) 'nom fichier image
Et ensuite tu te sers de cela:
.HTMLBody = "<html><p>Voici mon image.</p>" & _ "<img src='cid:" & nom & "'" & "width='100' height='100'><br>"
j'ai fait cela exprès pour qu'il n'y est pas de chemin en dur dans le code HTML!
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
29 juil. 2016 à 12:23
29 juil. 2016 à 12:23
C'est exactement ce que j'ai fait :)
Voilà mon code :
Merci :)
Voilà mon code :
Fichier = "\\SRVDATA01\Bureautique$\INDEXATIONS GASOIL\IMAGES\LOGO_AUTOMATE.jpg" nom = Dir(Fichier) For k = 3 To DL_GENERAL ADRESSE_MAIL = Sheets(2).Range("J" & k) Set mMessage = CreateObject("CDO.Message") With mMessage Set .Configuration = mConfig .To = ADRESSE_MAIL .From = xxxxx@xxxx.com .Subject = "INDEXATIONS GASOIL" .HTMLBody = "<html><p>Bonjour,<br><br>Veuillez trouver ci-joint les indexations gasoils pour tous les clients.<br><br><br>Automate FRET EUROPE.</p>" & _ "<img src='cid:" & nom & "'" & "width='400' height='130'><br>" .AddAttachment "\\SRVDATA01\Bureautique$\INDEXATIONS GASOIL\TEMP\INDEXATIONS GASOIL GENERALES.pdf" .AddAttachment Fichier .send End With Set mMessage = Nothing Next k
Merci :)
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
>
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
14 avril 2017 à 23:57
14 avril 2017 à 23:57
Bonjour,
je réveille un peu le sujet mais j'ai peu ou proue le même code, mais l'image ne s'affiche pas si je l'attache explicitement, elle est bien en pièce jointe mais pas intégrée au mail.
Si vous avez une idée, je suis preneur
COrdialement
je réveille un peu le sujet mais j'ai peu ou proue le même code, mais l'image ne s'affiche pas si je l'attache explicitement, elle est bien en pièce jointe mais pas intégrée au mail.
Dim Adresse As String
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim Flds As Variant
Dim Img As String, Plage As Range, PathTmp As String
PathTmp = Environ$("temp") & "\" & "Image.jpg"
Img = Dir(PathTmp)
Set Plage = Sheets("STATISTIQUE").Range("G17:M20")
If Dir(PathTmp) <> "" Then Kill PathTmp
On Error GoTo Err_Save
' préparation du mail
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' CDO Source Defaults
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "@mail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pw"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 '25
.Update
End With
'Création d'un fichier image dans le répertoire temporaire
Plage.CopyPicture
With ActiveSheet.ChartObjects.Add(0, 0, Plage.Width, Plage.Height)
.Activate
.Chart.Paste
.Chart.Export PathTmp, "JPG"
End With
ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete
With iMsg
Set .Configuration = iConf
.To = "@mail"
.CC = ""
.BCC = ""
.from = """@mail"" <@mail>"
.Subject = "Suivi des ventes " & Date & " à " & Time
.AddAttachment "fichier.xlsx"
' .AddAttachment PathTmp
.HTMLBody = "<span LANG=FR><p class=style2>" _
& "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _
& "Veuillez trouver ci-dessous les ventes du jour au " _
& Format(Date, "dd/mm/yyyy") & "<br><br>" _
& "Bien cordialement<br><br>" _
& "<img src='cid:" & Img & "'" & "width='400' height='100'></font></span>"
.Send
End With
Exit Sub
Err_Save:
If Err.Number = 1004 Then
MsgBox "Document non envoyé"
Exit Sub
Else
MsgBox Err.Description, vbOKOnly, "Erreur " & Err.Number
End If
Si vous avez une idée, je suis preneur
COrdialement
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
Modifié le 15 avril 2017 à 07:58
Modifié le 15 avril 2017 à 07:58
Bonjour,
Suis exactement l'exemple poster ici dans le même ordre:
https://forums.commentcamarche.net/forum/affich-33753415-image-dans-un-mail-en-vba-sans-utiliser-outlook#3
@+
Suis exactement l'exemple poster ici dans le même ordre:
https://forums.commentcamarche.net/forum/affich-33753415-image-dans-un-mail-en-vba-sans-utiliser-outlook#3
@+
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
20 avril 2017 à 09:43
20 avril 2017 à 09:43
Bonjour
Je sais bien que c'est le même exemple, puisque c'est de celui-ci que je me suis inspiré :-), mais malgré tout l'image est vide juste un rectangle de réservation de la zone, mais rien dedans. Pourtant le fichier image est bien présent dans le répertoire et son contenu est bien l'image que je souhaite.
Cordialement
Je sais bien que c'est le même exemple, puisque c'est de celui-ci que je me suis inspiré :-), mais malgré tout l'image est vide juste un rectangle de réservation de la zone, mais rien dedans. Pourtant le fichier image est bien présent dans le répertoire et son contenu est bien l'image que je souhaite.
Cordialement
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 avril 2017 à 12:24
20 avril 2017 à 12:24
On ne doit pas avoir les mêmes yeux, ton code ne correspond en rien au mien!
Sub essai() Dim Adresse As String Dim iMsg As Object Dim iConf As Object Dim strbody As String Dim Flds As Variant Dim Img As String, Plage As Range, PathTmp As String PathTmp = chemin image Img = Dir(PathTmp) 'Set Plage = Sheets("STATISTIQUE").Range("G17:M20") 'If Dir(PathTmp) <> "" Then Kill PathTmp On Error GoTo Err_Save With CreateObject("CDO.Message") .To = destinataire .CC = "" .BCC = "" .From = expediteur .Subject = "Suivi des ventes " & Date & " à " & Time .HTMLBody = "<span LANG=FR><p class=style2>" _ & "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _ & "Veuillez trouver ci-dessous les ventes du jour au " _ & Format(Date, "dd/mm/yyyy") & "<br><br>" _ & "Bien cordialement</p>" & _ "<img src='cid:" & Img & "'" & "width='400' height='100'></font></span>" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = expediteur .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Update .AddAttachment PathTmp 'chemin image jointe .AddAttachment chemin classeur .Send End With Err_Save: If Err.Number = 1004 Then MsgBox "Document non envoyé" Exit Sub Else MsgBox Err.Description, vbOKOnly, "Erreur " & Err.Number End If End Sub
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
20 avril 2017 à 18:16
20 avril 2017 à 18:16
Le code n'est pas rigoureusement le même puisque j'utilise une variable intermédiaire field plutôt que de faire .Configuration.Fields.Item mais le résultat est le même.
Voici ce que j'obtiens avec ton code et le mien. L'image est bien en pièce jointe, mais pas dans le corps du mail.
Donc est-ce lié à gmail et sa manière d'interpréter le "cid"....
--
Voici ce que j'obtiens avec ton code et le mien. L'image est bien en pièce jointe, mais pas dans le corps du mail.
Donc est-ce lié à gmail et sa manière d'interpréter le "cid"....
--
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 20 avril 2017 à 18:36
Modifié le 20 avril 2017 à 18:36
Je me suis mis dans la même configuration que toi avec une image sur la Feuil1 et cela fonctionne:
Voilà, peux pas faire plus!!!
Donc est-ce lié à gmail et sa manière d'interpréter le "cid"....
Je ne pense pas, car tu n'aurais rien d'affiché!
Là tu as le cadre
essaie aussi cela pour voir si le chemin est valide
@+ Le Pivert
Sub essai() Dim Img As String, Plage As Range, PathTmp, secours As String Const cdoBasic = 1 PathTmp = "C:\Users\LePivert\Documents\" & "Image.jpg" 'adapter repertoire Img = Dir(PathTmp) Set Plage = Sheets("Feuil1").Range("G17:M20")'adapter nom feuille If Dir(PathTmp) <> "" Then Kill PathTmp 'Création d'un fichier image dans le répertoire temporaire Plage.CopyPicture With ActiveSheet.ChartObjects.Add(0, 0, Plage.Width, Plage.Height) .Activate .Chart.Paste .Chart.Export PathTmp, "JPG" End With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete With CreateObject("CDO.Message") If Err Then secours = MsgBox("Problème de CDO non installé sur le serveur") Exit Sub Else .To = "destinataire@free.fr" 'adapter .CC = "" .BCC = "" .From = "expediteur@free.fr" 'adapter .Subject = "Suivi des ventes " & Date & " à " & Time .HTMLBody = "<span LANG=FR><p class=style2>" _ & "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _ & "Veuillez trouver ci-dessous les ventes du jour au " _ & Format(Date, "dd/mm/yyyy") & "<br><br>" _ & "Bien cordialement</p>" & _ "<img src='cid:" & Img & "'" & "width='400' height='100'></font></span>" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "expediteur@free.fr" 'adapter .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Update .AddAttachment PathTmp 'chemin image jointe .AddAttachment "C:\Users\LePivert\Documents\Classeur.xls" 'chemin classeur .Send If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez." End If On Error GoTo 0 End With MsgBox "Message envoyé avec pièces jointes" End Sub
Voilà, peux pas faire plus!!!
Donc est-ce lié à gmail et sa manière d'interpréter le "cid"....
Je ne pense pas, car tu n'aurais rien d'affiché!
Là tu as le cadre
essaie aussi cela pour voir si le chemin est valide
PathTmp = Environ$("temp") & "\" & "Image.jpg" MsgBox PathTmp
@+ Le Pivert
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
20 avril 2017 à 18:42
20 avril 2017 à 18:42
Oui le répertoire est bon...
Merci quand même de ton aide.
--
Merci quand même de ton aide.
--
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 avril 2017 à 18:44
20 avril 2017 à 18:44
As-tu essayé mon dernier code?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 avril 2017 à 19:16
20 avril 2017 à 19:16
Je viens d'essayer:
L'image est avec la pièce jointe(classeur)!!!!!!!!!!!!!
change ton répertoire, cela vient de là
PathTmp = Environ$("temp") & "\" & "Image.jpg"
L'image est avec la pièce jointe(classeur)!!!!!!!!!!!!!
change ton répertoire, cela vient de là
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
20 avril 2017 à 19:20
20 avril 2017 à 19:20
Je vais essayer ce soir.
Ce que tu dis est qu'il faut ou qu'il ne faut pas que l'image soit dans le même répertoire que le classeur excel ?
--
Ce que tu dis est qu'il faut ou qu'il ne faut pas que l'image soit dans le même répertoire que le classeur excel ?
--
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 20 avril 2017 à 19:24
Modifié le 20 avril 2017 à 19:24
Non qu'elle ne soit pas dans ce répertoire
PathTmp = Environ$("temp") & "\" & "Image.jpg"
, le classeur n'a rien à voir. Tu peux mettre ton image dans le même dossier que ton classeur contenant tes macros par exemple avec ThisWorkbook.Path
PathTmp = Environ$("temp") & "\" & "Image.jpg"
, le classeur n'a rien à voir. Tu peux mettre ton image dans le même dossier que ton classeur contenant tes macros par exemple avec ThisWorkbook.Path
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
20 avril 2017 à 21:49
20 avril 2017 à 21:49
Même résultat en changeant le répertoire.
Concernant Environ$("temp"), la chaine de caractère est case sensitive, cela dépends donc de la configuration du PC.
Je crois que je vais me contenter de la pièce jointe... j'ai perdu assez de temps.
MErci pour ton aide
--
Concernant Environ$("temp"), la chaine de caractère est case sensitive, cela dépends donc de la configuration du PC.
Je crois que je vais me contenter de la pièce jointe... j'ai perdu assez de temps.
MErci pour ton aide
--
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 21 avril 2017 à 08:00
Modifié le 21 avril 2017 à 08:00
Je suis pugnace, il n'y a pas de raison que le chemin ne soit pas reconnu quand il est dans une variable et fonctionne correctement quand c'est un chemin en dur.
J'ai donc mis le chemin dans une cellule et cela fonctionne!
Voilà avec un peu de persévérance
@+ Le Pivert
J'ai donc mis le chemin dans une cellule et cela fonctionne!
Sub essai() Dim Img As String, Plage As Range, secours As String Const cdoBasic = 1 'répertoire temporaire Range("A1").Value = Environ$("temp") & "\" & "Image.jpg" Img = Dir(Range("A1").Value) Set Plage = Sheets("Feuil1").Range("G17:M20")'adapter feuille If Dir(Range("A1").Value) <> "" Then Kill Range("A1").Value 'Création d'un fichier image dans le répertoire temporaire Plage.CopyPicture With ActiveSheet.ChartObjects.Add(0, 0, Plage.Width, Plage.Height) .Activate .Chart.Paste .Chart.Export Range("A1").Value, "JPG" End With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete With CreateObject("CDO.Message") If Err Then secours = MsgBox("Problème de CDO non installé sur le serveur") Exit Sub Else .To = "destinataire@free.fr" 'adapter .CC = "" .BCC = "" .From = "expediteur@free.fr" 'adapter .Subject = "Suivi des ventes " & Date & " à " & Time .HTMLBody = "<span LANG=FR><p class=style2>" _ & "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _ & "Veuillez trouver ci-dessous les ventes du jour au " _ & Format(Date, "dd/mm/yyyy") & "<br><br>" _ & "Bien cordialement</p>" & _ "<img src='cid:" & Img & "'" & "width='400' height='100'></font></span>" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "expediteur@free.fr" 'adapter .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Update .AddAttachment Range("A1").Value 'chemin image jointe .AddAttachment"C:\Users\LePivert\Documents\Classeur.xls" 'chemin classeur adapter .Send If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez." End If On Error GoTo 0 End With MsgBox "Message envoyé avec pièces jointes" Range("A1").Value = "" End Sub
Voilà avec un peu de persévérance
@+ Le Pivert
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
21 avril 2017 à 16:59
21 avril 2017 à 16:59
Pour moi le problème ne vient pas du chemin, puisque le fichier est bien joint au mail. Le PathTmp contient bien le chemin complet et le nom du fichier, img contient bien le nom du fichier image, le fichier est bien joint avec l'AddAttachment, c'est le <img src='cid:" & Img ... qui laisse ce cadre vide.
--
--
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
21 avril 2017 à 17:49
21 avril 2017 à 17:49
J'ai enfin trouvé, ton dernier mail m'a ouvert les yeux, le problème se situe au niveau de la variable Img.
En mettant un MsgBox a la suite de:
le message est vide!
Donc il faut mettre
voici le code:
Je pense que là on est bon!
Ce qui m' a trompé c'est que dans le code d'origine le nom du fichier image sort correctement, donc je n'ai pas vérifié qu'en mettant un autre chemin le nom était absent, c'est bizarre!
En mettant un MsgBox a la suite de:
Img = Dir(PathTmp) MsgBox Img
le message est vide!
Donc il faut mettre
Img = "Image.jpg"
voici le code:
Sub essai() Dim Img As String, Plage As Range, secours As String Dim PathTmp As Variant Const cdoBasic = 1 'répertoire temporaire PathTmp = Environ$("temp") & "\" & "Image.jpg" Img = "Image.jpg" Set Plage = Sheets("Feuil1").Range("G17:M20") 'adapter feuille If Dir(PathTmp) <> "" Then Kill PathTmp 'Création d'un fichier image dans le répertoire temporaire Plage.CopyPicture With ActiveSheet.ChartObjects.Add(0, 0, Plage.Width, Plage.Height) .Activate .Chart.Paste .Chart.Export PathTmp, "JPG" End With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Delete With CreateObject("CDO.Message") If Err Then secours = MsgBox("Problème de CDO non installé sur le serveur") Exit Sub Else .To = "destinataire@free.fr" .CC = "" .BCC = "" .From = "expediteur@free.fr" .Subject = "Suivi des ventes " & Date & " à " & Time .HTMLBody = "<span LANG=FR><p class=style2>" _ & "<font FACE=Calibri SIZE=3>Bonjour,<br><br>" _ & "Veuillez trouver ci-dessous les ventes du jour au " _ & Format(Date, "dd/mm/yyyy") & "<br><br>" _ & "Bien cordialement</p>" & _ "<img src='cid:" & Img & "'" & "width='400' height='100'></font></span>" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "expediteur@free.fr" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail" .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Configuration.Fields.Update .AddAttachment PathTmp 'chemin image jointe .AddAttachment "C:\Users\LePivert\Documents\monclasseur.xls" 'chemin classeur .Send If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez." End If On Error GoTo 0 End With MsgBox "Message envoyé avec pièces jointes" Kill PathTmp 'on supprime le fichier image End Sub
Je pense que là on est bon!
Ce qui m' a trompé c'est que dans le code d'origine le nom du fichier image sort correctement, donc je n'ai pas vérifié qu'en mettant un autre chemin le nom était absent, c'est bizarre!
Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg") nom = Dir(Fichier) 'nom fichier image
jpbauer
Messages postés
9
Date d'inscription
dimanche 20 juin 2004
Statut
Membre
Dernière intervention
21 avril 2017
21 avril 2017 à 18:02
21 avril 2017 à 18:02
Nan c'est pas pour çà.
la variable img contient bien le nom du fichier chez moi (img est bien = à "Image.jpg") . Si chez toi cela ne contient rien c'est que soit ton répertoire temporaire n'est pas "temp" mais "Temp" (case sensitive), soit que ce chemin est trop long pour la fonction Dir()
Ce qui me pose soucis est bien <img src='cid:" & Img ...
Sur un serveur Web, en codant en html <img src='cid:Image.jpg .... il va chercher le fichier Image.jpg dans le répertoire courant au fichier HTML en cours d'interprétation. Mais là comment CDO sait-il que le fichier Image.jpg est dans PathTmp, puisque le fichier Excel dans lequel est le code VBA n'est pas forcément dans ce répertoire.
J'ai bien testé <img src='cid:" & PathTmp... mais cela ne marche pas mieux
--
la variable img contient bien le nom du fichier chez moi (img est bien = à "Image.jpg") . Si chez toi cela ne contient rien c'est que soit ton répertoire temporaire n'est pas "temp" mais "Temp" (case sensitive), soit que ce chemin est trop long pour la fonction Dir()
Ce qui me pose soucis est bien <img src='cid:" & Img ...
Sur un serveur Web, en codant en html <img src='cid:Image.jpg .... il va chercher le fichier Image.jpg dans le répertoire courant au fichier HTML en cours d'interprétation. Mais là comment CDO sait-il que le fichier Image.jpg est dans PathTmp, puisque le fichier Excel dans lequel est le code VBA n'est pas forcément dans ce répertoire.
J'ai bien testé <img src='cid:" & PathTmp... mais cela ne marche pas mieux
--
28 juil. 2016 à 11:53
1 août 2017 à 13:04
un grand merci