Vba insérer une pièce jointe dans un mail, qui diffère selon le destinataire

Résolu/Fermé
axll6 - Modifié le 12 août 2020 à 11:31
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 13 août 2020 à 10:35
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 :
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 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
12 août 2020 à 12:18
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.
0
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
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > axll6
12 août 2020 à 13:55
tu ne nous a toujours pas montré le contenu de nomfichier.
tu peux éventuellement ajouter :
dim nomfichier as string, fichiertrouve as string
nomfichier=Range("c3") & Range("a" & Ligne)
fichiertrouve =dir(nomfichier)
.Attachments.Add = nomfichier

que contient la variable fichiertrouve?
0
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
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551
12 août 2020 à 14:43
que contient la variable fichiertrouve?
"fichier1.xls" est-il ouvert?
0
axl6 > yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
12 août 2020 à 14:49
non le fichier était fermé mais je viens d'essayer avec celui cii ouvert et cela ne change rien
Comment est ce que je vois ce que contient la variable fichiertrouve?
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > axl6
12 août 2020 à 15:14
comme tu as fait pour visualiser le contenu de la variable nomfichier.
0
axl6 > yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
12 août 2020 à 15:19
Fichier trouvé trouve le nom de mon fichier, et nomfichier trouve le chemin du fichier (chemin dossier+/+fichiertrouvé)
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
12 août 2020 à 15:34
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
' ...
0
J'ai essayé mais cela fait un message d'erreur "Type défini par l'utilisateur non défini" par rapport à "Lappli As outlook.Application"
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > axl6
12 août 2020 à 16:25
il faut sans doute ajouter ceci dans les références du projet: "microsoft outlook xxx object library".
0
ab6 > yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
13 août 2020 à 09:17
Ca marche! Il ne faut pas mettre de "=" entre .Attachments.Add et nomfichier
Merci beaucoup
0
yg_be Messages postés 23335 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > ab6
13 août 2020 à 10:35
parfait, peux-tu alors marquer la discussion comme résolue?
0