Export PDF avec nom spécifique et envoi mail

  • Initiateur de la discussion Initiateur de la discussion raf26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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.
 
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?
 
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é.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
719
Réponses
6
Affichages
1 K
Réponses
15
Affichages
4 K
Retour