Vba insérer une pièce jointe dans un mail, qui diffère selon le destinataire
Résolu
axll6
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite créer une macro vba qui permette d'envoyer un mail à différentes personnes avec une pièce jointe différente pour chaque personne.
Pour l'instant, mon code est :
la ligne .Attachments.Add = Range("c3") & Range("a" & Ligne) ne fonctionne pas (message d'erreur : 'échec de l'opération'). Les fichiers à insérer se trouvent dans un même dossier dont le chemin est écrit en cellule c3, puis le nom de chaque fichier est écrit dans la colonne "a" et "Ligne" servirait à traiter les différentes lignes de la colonne "a" 'cela fonctionne pour "Subject" et "To"
Comment faut il faire pour que cela fonctionne?
Je souhaite créer une macro vba qui permette d'envoyer un mail à différentes personnes avec une pièce jointe différente pour chaque personne.
Pour l'instant, mon code est :
Sub AddAttachment()
Dim Lemail As Variant
Dim Ligne As Integer
Set Lemail = CreateObject("outlook.application")
For Ligne = 3 To 4
With Lemail.CreateItem(olmailitem)
.to = Range("d" & Ligne)
.Subject = Range("c9") & Range("b" & Ligne)
.body = Range("j3")
.Attachments.Add = Range("c3") & Range("a" & Ligne)
.display
End With
Next Ligne
End Sub
la ligne .Attachments.Add = Range("c3") & Range("a" & Ligne) ne fonctionne pas (message d'erreur : 'échec de l'opération'). Les fichiers à insérer se trouvent dans un même dossier dont le chemin est écrit en cellule c3, puis le nom de chaque fichier est écrit dans la colonne "a" et "Ligne" servirait à traiter les différentes lignes de la colonne "a" 'cela fonctionne pour "Subject" et "To"
Comment faut il faire pour que cela fonctionne?
Configuration: Windows / Edge 84.0.522.52
3 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
as-tu envisagé de nous donner des informations utiles, par exemple le contenu des deux cellules ("c3") & ("a" & Ligne)?
as-tu essayé ceci:dim nomfichier as string nomfichier=Range("c3") & Range("a" & Ligne) .Attachments.Add = nomfichier
en cas d'erreur, il te suffit alors d'examiner le contenu de la variable nomfichier.-
Bonjour,
Oui dans mon premier message, j'ai indiqué que la cellule "c3" contient le chemin d'accès aux différents fichiers (tous les fichiers se trouvent dans ce dossier); la colonne a contient le nom de chaque fichier, et "ligne" permet de traiter la demande pour chaque ligne
Ainsi, colonnes A : Nom du fichier , B: complément de l'objet du mail; C: chemin du dossier où se trouvent les fichiers (et "c9" le début d'objet du mail), D: Email destinataire
Votre code envoie le message d'erreur "Echec de l'opération" et renvoi à la ligne ".Attachments.Add = nomfichier". Pourtant, en cliquant dessus, le "nomfichier" correspond bien à la cellule c3 et "a" donc au nom du fichier existant
-
-
Cela fait la même erreur que précédemment : "Echec de l'opération" sur la ligne ".Attachments.Add = nomfichier"
En passant sur "nomfichier" cela indique le nom de mon fichier qui doit être inséré en PJ dans le mail "C:\Users\213AE\Desktop\Envoi\fichier1.xls" où "C:\Users\213AE\Desktop\Envoi\" est contenu en "c3" et "fichier1.xls" en cellule a2 -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
ceci semble mieux fonctionner:Dim Lappli As outlook.Application Dim Lemail As outlook.MailItem Dim Ligne As Integer Set Lappli = New outlook.Application For Ligne = 3 To 4 Set Lemail = Lappli.CreateItem(olMailItem) With Lemail ' ...