Microsoft 365 Créer des fichiers PDF pour chaque personne et les envoyer à un destinataire unique

Retr0

XLDnaute Nouveau
Bonjour,

Je dois envoyer des convocations à une liste de personne, mais mon but est d'envoyer chaque tous ces PDF créé sur Excel à un seul destinataire (le représentant) car je n'ai pas toujours le contact de toutes les personnes.

Vous trouverez ci-dessous le code VBA que j'utilise mais qui envoi à chaque destinataire.

VB:
Sub Macro1()

'Déclaration des variables
Dim iLigStagiaire, nLigStagiaire As Integer
nLigStagiaire = Param.Cells(1, 2)
Dim NomFichierSP, NomFichierDT As String
Dim CheminBureau As String
Dim ObjetMail, ContenuMail As String
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

CheminBureau = ObtenirCheminBureau() & "\"

If nLigStagiaire > 0 Then
    For iLigStagiaire = 1 To nLigStagiaire
        'Création du PDF
        Sheets("Modèle").Select
        Sheets("Modèle").Copy After:=Worksheets("Modèle")
        Sheets("Modèle (2)").Name = "Convocation"
        Sheets("Convocation").Select
        Sheets("Convocation").Cells(10, 2) = Tableau.Cells(iLigStagiaire + 3, 2)    'Civilité
        Sheets("Convocation").Cells(10, 3) = Tableau.Cells(iLigStagiaire + 3, 3)    'Nom Prénom
        NomFichierSP = Param.Cells(2, 2) & Tableau.Cells(iLigStagiaire + 3, 1) & "-" & Tableau.Cells(iLigStagiaire + 3, 3) & "-" & Param.Cells(3, 2) & ".pdf"
        NomFichierDT = CheminBureau & Tableau.Cells(iLigStagiaire + 3, 1) & "-" & Tableau.Cells(iLigStagiaire + 3, 3) & "-" & Param.Cells(3, 2) & ".pdf"
        Sheets("Convocation").ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFichierSP, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
        Sheets("Convocation").ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomFichierDT, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
        
        'Envoi du mail
        ObjetMail = "[1Life] Convocation de formation " & Tableau.Cells(iLigStagiaire + 3, 1) & " - " & Tableau.Cells(iLigStagiaire + 3, 3) & " - " & Param.Cells(3, 2)
        ContenuEmail = Param.Cells(5, 2)
        Call EnvoyerEmail(ObjetMail, Tableau.Cells(iLigStagiaire + 3, 4), ContenuEmail, NomFichierDT, Param.Cells(4, 2))
        
        'Suppression feuille
        Sheets("Convocation").Delete
        If Param.Cells(2, 5) = "" Or Left(Param.Cells(2, 5).Value, 1) = "N" Then
            Kill NomFichierDT
        End If
        
        
    Next
End If

Application.ScreenUpdating = True

End Sub
 

kiki29

XLDnaute Barbatruc
Salut, via CDO sans oublier RdB .

Pourquoi utiliser le code CDO au lieu de l'automatisation Outlook ou SendMail dans VBA.

1 : Peu importe le programme de messagerie que vous utilisez (il utilise uniquement le serveur SMTP).
2 : Peu importe la version d'Office que vous utilisez (97…2016)
3 : Vous pouvez envoyer une plage/feuille dans le corps du courrier (certains programmes de messagerie ne peuvent pas le faire)
4: Vous pouvez envoyer n'importe quel fichier que vous aimez (fichiers Word, PDF, PowerPoint, TXT,….)
5 : Aucun avertissement de sécurité, vraiment génial si vous envoyez beaucoup de courrier en boucle.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
750

Statistiques des forums

Discussions
315 091
Messages
2 116 113
Membres
112 662
dernier inscrit
lou75