Insérer une pièce jointe dans un mail
Bonjour,
je rencontre des soucis pour insérer une pièce jointe dans mon mail.
J'ai une macro qi ouvre un document Word modèle dont les signets sont modifiés en fonction de certaines valeurs dans le tableau Excel puis qu'il l'enregistre dans un dossier spécifié.
Jusque là pas de de souci.
Ensuite je créé un mail avec les différents destinataires, l'objet et le corps mais il ne veut pas insérer mon fichier Word fraichement créé et enregistré.
J'aimerais également éviter de créer le fichier Word e doublon s'il existe déjà et donc seulement l'envoyer...
Et aussi Nettoyer la mémoire de l'ordinateur car j'ai souvent un souci avec Word qui me dit que le fichier est déjà ouvert...
Ci-après mon code...
En vous remerciant par avance !
Sub DemandeAffectation()
'Ouverture, modificaqtion et enregistrement du document Word dans dossier
Dim Wordapp As Word.Application
Dim Ligne As Integer
Ligne = Selection.Row
Dim Chemin As String
Chemin = Range("F" & Ligne)
Dim DemandeAffectation As String
DemandeAffectation = Chemin & "\" & "Demande d'affectation"
Dim PlanReseau As String
PlanReseau = Chemin & "\" & "Plan réseau"
Dim PlanTravaux As String
PlanTravaux = Chemin & "\" & "Plan travaux"
Set Wordapp = CreateObject("Word.Application")
Wordapp.Documents.Open "C:\Modèle_Demande d'affectation.docx"
Wordapp.Visible = False
Wordapp.ActiveDocument.Bookmarks("Signet1").Range.Text = Range("C" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet2").Range.Text = Range("T" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet3").Range.Text = Range("Q" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet4").Range.Text = Range("O" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet5").Range.Text = Range("Z" & Ligne).Value
Wordapp.ActiveDocument.SaveAs DemandeAffectation
'Wordapp.Visible = True
Word.Application.Quit
'Edition et envoi du Mail
Dim MaMessagerie As Object
Dim MonMessage As Object
Dim MaSignature As String
Set MaMessagerie = CreateObject("Outlook.Application")
Set MonMessage = MaMessagerie.CreateItem(0)
MaSignature = MonMessage.htmlbody
With MonMessage
.To = ""
.cc = ""
'.cci =
.Subject = ""
.Attachments.Add (DemandeAffectation)
.htmlbody = "<font size=+0.5>" & "Bonjour, " & "<br><br>" & _
"Ci-joint, une nouvelle demande d'affectation." & "<br><br>" & _
"Cordialement, " & "<br><br></font>" & _
MaSignature
End With
'Affichage du mail
MonMessage.Display
'Envoi du mail
'MonMessage.Send
Range("AH" & Ligne) = Now
End SubBonjour NiniBobo
Je n'ai pas compris tout le code, il y a des variables qui ne servent à rien
Mais le voici modifié pour création d'un fichier temporaire et supression
Sub DemandeAffectation()
Dim Wordapp As Word.Application
Dim MaMessagerie As Object, MonMessage As Object
Dim MaSignature As String
Dim Chemin As String, CheminComplet As String, NomFichier As String
Dim DemandeAffectation As String
Dim PlanReseau As String
Dim PlanTravaux As String
Dim Ligne As Long
'Ouverture, modificaqtion et enregistrement du document Word dans dossier
Ligne = Selection.Row
' Récupérer le chemin
Chemin = Range("F" & Ligne)
'
DemandeAffectation = Chemin & "\" & "Demande d'affectation\"
' Pas compris à quoi cela servait
PlanReseau = Chemin & "\" & "Plan réseau\"
PlanTravaux = Chemin & "\" & "Plan travaux\"
' Définir le nom du fichier temporaire
NomFichier = Format(Date, "yyyy.mm.dd") & ".docx"
' Définir le chemin complet avec nom du fichier
CheminComplet = DemandeAffectation & NomFichier
'
Set Wordapp = CreateObject("Word.Application")
Wordapp.Documents.Open "C:\Modèle_Demande d'affectation.docx"
Wordapp.Visible = False
Wordapp.ActiveDocument.Bookmarks("Signet1").Range.Text = Range("C" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet2").Range.Text = Range("T" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet3").Range.Text = Range("Q" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet4").Range.Text = Range("O" & Ligne).Value
Wordapp.ActiveDocument.Bookmarks("Signet5").Range.Text = Range("Z" & Ligne).Value
Wordapp.ActiveDocument.SaveAs CheminComplet
Wordapp.ActiveDocument.Close SaveChanges:=False
'
Wordapp.Quit
'Edition et envoi du Mail
Set MaMessagerie = CreateObject("Outlook.Application")
Set MonMessage = MaMessagerie.CreateItem(0)
MaSignature = MonMessage.htmlbody
With MonMessage
.To = ""
.cc = ""
'.cci =
.Subject = ""
.Attachments.Add CheminComplet
.htmlbody = "<font size=+0.5>" & "Bonjour, " & "<br><br>" & _
"Ci-joint, une nouvelle demande d'affectation." & "<br><br>" & _
"Cordialement, " & "<br><br></font>" & _
MaSignature
End With
' On peut supprimer le fichier temporaire ICI
Kill CheminComplet
'Affichage du mail
MonMessage.Display
'Envoi du mail
'MonMessage.Send
Range("AH" & Ligne) = Now
' Effacer les variables objet
Set Wordapp = Nothing
Set MaMessagerie = Nothing: Set MonMessage = Nothing
End SubNota : code non testé
A+
Bonjour, merci pour ton retour.
J'ai toujours le problème au moment d'ajouter la pièce jointe.
Il me dit fichier introuvable...
Est ce que cela pourrait être lié au fait que le document est en cours de synchro sur Onedrive??? Si oui, comment pourrais-je contourner le problème?
Il manquait le ".docx" à mon fichier à joindre...
Par contre j'ai toujours Word qui court dans le système... Du coup si je lance de nouveau la macro cela engendre une erreur...
Je en plus pas ouvrir le document modèle à modifier.
Bonjour NiniBobo
Désolé, j'ai laissé la coquille originale dans le code donné
Il faut remplacer
Word.Application.QuitPar
Wordapp.QuitL'instance créée est dans cette variable objet
A+