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 Sub

Bonjour 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 Sub

Nota : 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.Quit

Par

Wordapp.Quit

L'instance créée est dans cette variable objet

A+

Merci!!

Rechercher des sujets similaires à "inserer piece jointe mail"