Joindre un fichier pdf pour envoi mail

Bonjour,

j'ai trouvé sur ce site un programme VBA qui marche super bien (merci déjà).

Ce que j'aimerais c'est le compléter pour pouvoir joindre un fichier PDF enregistré dans un répertoire sur mon disque dur

voici le code actuel:

Option Explicit

Public Sub EnvoiAutomatiqueMail()

Dim OutlookApp As Object

Dim OutlookMail As Object

Dim adresse As String

Dim message As String

Dim sujet As String

Dim i As Integer

With Sheets("feuil1")

For i = 6 To .[A65536].End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A

'objet du mail

sujet = .Cells(i, "B")

'corps du mail

message = .Cells(i, "C") & vbCr & .Cells(i, "D") & vbCr & .Cells(i, "E") & vbCr & .Cells(i, "F")

'adresse mail destinataire

adresse = .Cells(i, "A")

Set OutlookApp = CreateObject("outlook.application")

Set OutlookMail = OutlookApp.createitem(0)

With OutlookMail

.Subject = sujet 'sujet du mail

.To = adresse 'adresse mail destinataire

.body = message 'corps du message

.Display 'affiche le mail

'.send 'on envoie le mail créé

End With

Next i 'on passe au mail suivant

End With

End Sub

ensuite j'aimerai à chaque mail joindre le pdf qui va avec (il y en a 60 différent mais suivent tous la même logique : le pdf 1 avec la ligne excel 2, le 2 avec la ligne 3 etc...)

j'espère avoir été clair et que quelqu'un aura le temps de m'aider

merci d'avance en tout cas ....

bonjour,

l'instruction .attachment.add te permet de joindre une annexe

With OutlookMail
.Subject = sujet 'sujet du mail
.To = adresse 'adresse mail destinataire
.body = message 'corps du message
.attachments.add "chemin\" & cells(i,colonnequicontientlenomdufichierpdf)  'à adapter
.Display 'affiche le mail
'.send 'on envoie le mail créé
End With

edit ajout s a attachment

c'est ça que je cherche : j'ai mis le chemin dans la cellule BL dans mon cas

je dois laissé le & dans l'instruction?

j'ai le code erreur 400 quand je lance la macro....

grrr j'y suis presque...

merci déjà pour cette avancée ...


pour être plus précis j'ai donc rajouté la ligne .attachment comme suit :

Set OutlookApp = CreateObject("outlook.application")

Set OutlookMail = OutlookApp.CreateItem(0)

With OutlookMail

.Subject = sujet 'sujet du mail

.To = adresse 'adresse mail destinataire

.Body = message 'corps du message

.attachment.Add Cells(i, BL)

et alors j'ai le message erreur 400.....

merci d'encore m'aider

Watou a écrit :

c'est ça que je cherche : j'ai mis le chemin dans la cellule BL dans mon cas

je dois laissé le & dans l'instruction?

j'ai le code erreur 400 quand je lance la macro....

re-bonjour

si tu dois laisser le & ? je n'en sais rien, je ne connais pas à quoi ressemble ton classeur, ni ce que contient la colonne BL.

dans BL je met le chemin de mon fichier : C:\Users\David\Downloads\FACTURE1_ilovepdf_split_all.zip\p01

puis 02,03,04 etc...

et ma ligne d'instruction est

.attachment.Add Cells(i, BL)

et là j'ai le code erreur 400 ...

re-bonjour,

tu veux dire la colonne BL alors

.attachments.add cells(i,"BL")

si tu veux dire la colonne dont l'indice est dans la variable BL alors

.attachments.add cells(i,BL)

note le "s" après "attachment", pour faire .attachements.add

Bonjour

au lieu de parler dans le vide fourni un fichier test avec 2/ lignes

cela sera plus simple....

et essaye d'utiliser les balises codes quand tu met de lignes de code...

fred

merci vraiment pour votre aide

j'ai mis le fichier avec 2 lignes

ce que j'essaie est donc d'automatiser l'envoi de mail avec fichiers joints...

je suis encore novice en VBA et j'essaie d'apprendre...

65mail-facture.xlsx (9.13 Ko)

Bonjour

une proposition, à tester

Option Explicit
Public Sub EnvoiAutomatiqueMail()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String, annexe As String
Dim message As String
Dim sujet As String
Dim i As Integer
With Sheets("feuil1")
Set OutlookApp = CreateObject("outlook.application")
For i = 6 To .[A65536].End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A
'objet du mail
sujet = .Cells(i, "B")
annexe = .Cells(i, "F")
'corps du mail
message = .Cells(i, "C") & vbCr & .Cells(i, "D") & vbCr & .Cells(i, "E") & vbCr & .Cells(i, "F")
'adresse mail destinataire
adresse = .Cells(i, "A")
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = sujet 'sujet du mail
.To = adresse 'adresse mail destinataire
.body = message 'corps du message
.Display 'affiche le mail
.attachments.Add annexe
'.send 'on envoie le mail créé
End With
Next i 'on passe au mail suivant
End With
End Sub

Bonjour,

merci pour cette aide : ça marche !!! ils me prépare mes mail comme je le souhaite, super!

une dernière bêtise : il commence à la ligne 6 et je n'arrive pas à changer ça ....

j'imagine que ça se trouve dans la ligne de code

For i = 6 To .[A65536].End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A

mais quand je change 6 par 1 ça bug .....

mais je suis déjà très content de voir que ça fonctionne, mille merci

Bonjour,

moi j'essaierai avec 2 au lieu de 1

Ca marche !

merci pour tout

Bonjour,

j'ai changé d'ordinateur et ma macro (programme VBA) ne marche plus correctement, il y a un bug ...

j'utilise le code suivant :

Option Explicit

Public Sub EnvoiAutomatiqueMail()

Dim OutlookApp As Object

Dim OutlookMail As Object

Dim adresse As String, annexe As String

Dim message As String

Dim sujet As String

Dim i As Integer

With Sheets("feuil5")

Set OutlookApp = CreateObject("outlook.application")

For i = 2 To .[A65536].End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A

'objet du mail

sujet = .Cells(i, "BM")

annexe = .Cells(i, "BU")

'corps du mail

message = .Cells(i, "BN") & vbCr & .Cells(i, "BO") & vbCr & .Cells(i, "BP") & vbCr & .Cells(i, "BQ") & vbCr & .Cells(i, "BR") & vbCr & .Cells(i, "BS") & vbCr & .Cells(i, "BT")

'adresse mail destinataire

adresse = .Cells(i, "BG")

Set OutlookApp = CreateObject("outlook.application")

Set OutlookMail = OutlookApp.createitem(0)

With OutlookMail

.Subject = sujet 'sujet du mail

.To = adresse 'adresse mail destinataire

.body = message 'corps du message

.send 'encvoie le mail

.attachments.Add annexe

'.Display'on envoie le mail créé

End With

Next i 'on passe au mail suivant

End With

End Sub

quand je laisse "Display" il affiche mes mails (82 dans ce cas) et je sais cliquer sur chacun d'entre eux, avec la pièce jointe.

quand je mets .send il me met un message erreur :

Erreur d'execution '-2147221238 (8004010 a)':

l'élément a été déplacé ou supprimé

sauriez-vous m'aider ??

merci d'avance

david

bonjour,

il me semble que les instructions ne sont pas dans le bon ordre.

Option Explicit
Public Sub EnvoiAutomatiqueMail()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String, annexe As String
Dim message As String
Dim sujet As String
Dim i As Integer
With Sheets("feuil5")
Set OutlookApp = CreateObject("outlook.application")
For i = 2 To .[A65536].End(xlUp).Row ' on passe en revue toutes les lignes de la colonne A
'objet du mail
sujet = .Cells(i, "BM")
annexe = .Cells(i, "BU")
'corps du mail
message = .Cells(i, "BN") & vbCr & .Cells(i, "BO") & vbCr & .Cells(i, "BP") & vbCr & .Cells(i, "BQ") & vbCr & .Cells(i, "BR") & vbCr & .Cells(i, "BS") & vbCr & .Cells(i, "BT")
'adresse mail destinataire
adresse = .Cells(i, "BG")
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = sujet 'sujet du mail
.To = adresse 'adresse mail destinataire
.body = message 'corps du message
.attachments.Add annexe
'.Display'on affiche le mail créé
.send 'envoie le mail
End With
Next i 'on passe au mail suivant
End With
End Sub

merci, ça marche parfaitement

j'ai encore une question, ce matin j'ai fait tourner la macro pour envoyer mes fichiers

tout a fonctionné mais il y a 3 adresses mail qui bloque la macro .... des adresses pourtant tout à fait normales ...

il y a des adresses qui ne marchent pas ? une façon de les écrire?

j'ai bien regardé et je ne vois pas pourquoi ces 3 adresses là ne marches pas ... ce qui bloque chaque fois la macro

merci d'avance pour un éventuel conseil

bonjour,

as-tu essayé d'envoyer un message (sans passer par la macro) à ces adresses mail ?

as-tu un message d'erreur ? lequel ? sur quelle instruction ? quelles sont ces adresses "normales" ? ...

oui je correspond par mail avec ces personnes très souvent

quand j'éxécute la macro (voir plus haut dans le post, il y le détail du code VBA) je reçois un message erreur :

erreur d'execution -2147467259(8000-4005)

impossible de reconnaitre un ou plusieurs noms

adresse en question : Marijke.Verelst@hortiplan.com

bizarre non ?

Bonjour,

je n'ai aucun problème pour préparer un mail avec cette adresse telle que tu l'as donnée.

si tu fais le display sans envoyer, cela fonctionne-t-il ?

Rechercher des sujets similaires à "joindre fichier pdf envoi mail"