Export PDF avec nom spécifique et envoi mail

raf26

XLDnaute Occasionnel
Bonjour,

Utilisateur occasionnel d'Excel, je viens solliciter votre aide pour une macro

J'ai un fichier Excel à remplir que j'exporte automatiquement via macro en PDF en le nommant avec des références à certaines cellules (nom de mon fichier + B10 = le nom et B12 = le prénom + C95 = la date).

Jusque là tout va bien.

J'aimerais pouvoir envoyer automatiquement par mail (outlook) ce fichier PDF (nommé avec donc les noms et prénoms + date) à 2 destinataires précis (qui ne changent pas).

Pour résumer :
Export PDF avec nom de fichier personnalisé : c'est ok
Envoi d'un mail : j'ai trouvé des macros mais le fichier pdf est envoyé avec le nom de mon fichier Excel, et non pas personnalisé comme je le souhaite

Je voudrais réunir ces 2 fonctions en une seule macro mais là, je plante.

Merci d'avance pour votre contribution.

Bonne journée

Cordialement
 

Sequoyah

XLDnaute Nouveau
Bonjour le fil et le forum,
code à tester:
VB:
Sub Test()

    Dim WsMail     As Worksheet
    Dim Chemin As String, FichierPDF As String, Destinataire As String, Contenu As String
    Dim Nom    As String, Prenom As String, MaDate As String, MonFichier As String
    Dim MaMessagerie As Object, MonMessage As Object

    Set WsMail = Sheets("Feuil1")  '==========>> A' adapter
    
    Chemin = "C:\Users\Username\Desktop\"  '==========>> A' adapter
    
    Application.ScreenUpdating = False
    
    Nom = WsMail.Range("B10").Value
    Prenom = WsMail.Range("B12").Value
    MaDate = Format(WsMail.Range("C95").Value, "dd-mm-yyyy")
              
    Destinataire = "monadresse1@mail.fr;monadresse2@mail.fr" '==========>> A' adapter
    
    FichierPDF = Chemin & Nom & " " & Prenom & " " & MaDate & ".PDF"
    
    Contenu = "Bonjour," & vbNewLine & _
              vbNewLine & _
              "veuillez trouver......." & vbNewLine & _
              "Bien cordialement."
    
    WsMail.ExportAsFixedFormat _
                               Type:=xlTypePDF, _
                               Filename:=FichierPDF, _
                               Quality:=xlQualityStandard, _
                               IncludeDocProperties:=True, _
                               IgnorePrintAreas:=False, _
                               OpenAfterPublish:=False
    
    Set MaMessagerie = CreateObject("Outlook.Application")
    Set MonMessage = MaMessagerie.CreateItem(0)
    
    With MonMessage
        .To = Destinataire
        .Subject = "Mon sujet"
        .Body = Contenu
        .Attachments.Add FichierPDF
        'affiche le message
        .Display
        '.Send '==========>> enlever l'apostrophe pour que le mail soit envoyé automatiquement
    End With
    
    Kill FichierPDF
    
    Application.ScreenUpdating = True
    
End Sub
 

raf26

XLDnaute Occasionnel
Bonjour Sequoyah

Merci, le code marche nickel, c’est exactement ce que je cherchais. Bravo et encore merci

Est il possible d’ ajouter ma signature Outlook (c’est une image format jpeg).

merci
 
Dernière édition:

Sequoyah

XLDnaute Nouveau
Bonjour raf26,
merci pour ton retour, voici le code corrigé:
VB:
Sub Test2()

    Dim WsMail     As Worksheet
    Dim Chemin As String, FichierPDF As String, Destinataire As String, Contenu As String, Signature As String
    Dim Nom    As String, Prenom As String, MaDate As String, MonFichier As String
    Dim MaMessagerie As Object, MonMessage As Object

    Set WsMail = Sheets("Feuil1")                '==========>> A' adapter
    
    Chemin = "C:\Users\Username\Desktop\"            '==========>> A' adapter
    
    Application.ScreenUpdating = False
    
    Nom = WsMail.Range("B10").Value
    Prenom = WsMail.Range("B12").Value
    MaDate = Format(WsMail.Range("C95").Value, "dd-mm-yyyy")
    
    Destinataire = "monadresse1@mail.fr;monadresse2@mail.fr" '==========>> A' adapter
    
    FichierPDF = Chemin & Nom & " " & Prenom & " " & MaDate & ".PDF"
    
    Contenu = "<HTML><body>Bonjour " & Nom & " " & Prenom & ",<br>" & _
              "veuillez trouver ci-joint le fichier Suivi " & Nom & " " & Prenom & " " & MaDate & " .<br>" & _
              "Bien cordialement." & " </body>"
    
    WsMail.ExportAsFixedFormat _
                               Type:=xlTypePDF, _
                               Filename:=FichierPDF, _
                               Quality:=xlQualityStandard, _
                               IncludeDocProperties:=True, _
                               IgnorePrintAreas:=False, _
                               OpenAfterPublish:=False
    
    Set MaMessagerie = CreateObject("Outlook.Application")
    Set MonMessage = MaMessagerie.CreateItem(0)
    
    With MonMessage
        .Display
    End With
    
    Signature = MonMessage.htmlBody
    
    With MonMessage
        .To = Destinataire
        .Subject = "Suivi " & Nom & " " & Prenom & " " & MaDate
        .htmlBody = Contenu & Signature
        .Attachments.Add FichierPDF
        'affiche le message
        .Display
        '.Send '==========>> enlever l'apostrophe pour que le mail soit envoyé automatiquement
    End With
    
    Kill FichierPDF
    
    Application.ScreenUpdating = True
 
End Sub
 

raf26

XLDnaute Occasionnel
Quelle modif je dois apporter pour que cette macro soit utilisable sur un autre pc que le mien (pc d'un collègue par exemple)

Et que mon collègue puisse également envoyer par son Outlook le fichier PDF généré ?

Car dans le code le chemin indique mon nom.
 

Staple1600

XLDnaute Barbatruc
Re

raf26
Tu as eu la réponse sur ton autre fil, non?
Il suffit de définir Chemin comme dans l'autre macro
VB:
Dim objShell, Chemin$
Set objShell = CreateObject("Wscript.Shell")
Chemin= objShell.SpecialFolders("MyDocuments") & "\"
Donc tu vois quelle modif faire dans le code de Sequoyah?
 

raf26

XLDnaute Occasionnel
pfff nan j'suis paumé

je recopie ton code mais je le place ou dans la macro de Sequoyah ?

J'efface quoi : juste ça ?

Chemin = "C:\Users\Raphael\Documents\" et colle ton code à la place ?

Vraiment désolé, mais je ne maitrise rien !
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, raf16

C'est pourtant simple, non?
Toutes les infos sont dans le fil
Au départ on pouvait lire
Chemin = "C:\Users\Username\Desktop\" '==========>> A' adapter
Donc suivons le conseil, adaptons avec ce que je disais
Dim objShell, Chemin$
Set objShell = CreateObject("Wscript.Shell")
Chemin= objShell.SpecialFolders("MyDocuments") & "\"
Donc oui en clair, on ajoute les déclarations de variables avec les autres Dim
(donc en début de code)
Et on remplace la ligne initiale qui commence par Chemin...
par la mienne
Le reste du code restant inchangé.
 

Discussions similaires

Réponses
2
Affichages
238

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 179
dernier inscrit
BERSEB50