joindre un fichier pdf pour envoi mail

Y compris Power BI, Power Query et toute autre question en lien avec Excel
W
Watou
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 8 août 2016
Version d'Excel : 2016

Message par Watou » 8 août 2016, 16:08

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 ....
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'980
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 8 août 2016, 16:24

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
Modifié en dernier par h2so4 le 8 août 2016, 17:09, modifié 1 fois.
W
Watou
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 8 août 2016
Version d'Excel : 2016

Message par Watou » 8 août 2016, 16:40

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
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'980
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 8 août 2016, 16:44

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.
W
Watou
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 8 août 2016
Version d'Excel : 2016

Message par Watou » 8 août 2016, 16:58

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 ...
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'980
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 8 août 2016, 17:08

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
Avatar du membre
fred2406
Membre impliqué
Membre impliqué
Messages : 2'038
Appréciations reçues : 37
Inscrit le : 13 mai 2014
Version d'Excel : O365Pro-2019-2011MAC
Version de Calc : 6.3

Message par fred2406 » 8 août 2016, 19:26

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
Je ne réponds pas aux M.P. non sollicités.
Ne pas oublier :
:btres:
Fred :O-O:
W
Watou
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 8 août 2016
Version d'Excel : 2016

Message par Watou » 9 août 2016, 09:25

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...
mail facture.xlsx
(9.13 Kio) Téléchargé 37 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'980
Appréciations reçues : 359
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 août 2016, 18:14

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
W
Watou
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 8 août 2016
Version d'Excel : 2016

Message par Watou » 10 août 2016, 12:58

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message