Macro - Envoi liste en pdf par mail a une liste de destinataires

eldoctor62

XLDnaute Nouveau
Bonjour,

Petit projet sur script ambitieux...

J'utilise une macro pour envoyer des mails a des destinataires:

Code:
Sub envoie_une_page()
Sheets("TEST").Copy
Cells.Copy
Cells.PasteSpecial (xlPasteValues)
ActiveWorkbook.SendMail "tartempion@yahoo.fr", "TEST1"
End Sub

Je souhaiterais si possible l'optimiser

J'ai donc joint un fichier... Je cherche a faire une macro qui :


1- créer un fichier .pdf de "A10:B19"
2- envoi ce fichier au destinataires de "A1" si "B1" = Oui
3- n'envoi pas ce fichier au destinataires de "A1" si "B1" = Non
4- pareil pour les "A2:B4"
5- et ferme sans sauvegarder le pdf
 

Pièces jointes

  • testEnvoiPdf.xlsx
    11.2 KB · Affichages: 45

Staple1600

XLDnaute Barbatruc
Re : Macro - Envoi liste en pdf par mail a une liste de destinataires

Bonjour à tous

eldoctor62
Avant l’optimisation, pensez à utiliser le moteur de recherche du forum (la loupe en haut à droite)
Cette question ayant été déjà traitée moults fois...

Vous trouverez dans les archives tout ce qu'il faut , déjà prêt à l'emploi.
Il ne vous restera plus qu'à l'adapter à votre problématique ;)

PS
: Si cette adaptation vous pose souci, revenez vers nous , on vous aidera alors à peaufinez/optimiser la chose ;)
 
Dernière édition:

eldoctor62

XLDnaute Nouveau
Re : Macro - Envoi liste en pdf par mail a une liste de destinataires

J'ai donc cherché et cherché et j'ai trouvé ce code...

Je pense que la base est bonne car il se sert de ma messagerie par defaut...

Il tien compte d'une liste de destinataire

Par contre je ne trouve pas comment transformer "A10:B19" en .pdf

Code:
Sub Bouton1_Clic()


    Dim envoyerA As String, envoyerCc As String, Subject As String
    Dim envoyerB As String
      
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
    envoyerA = Sheets("Feuil1").Range("A1").Value
    envoyerB = Sheets("Feuil1").Range("A2").Value
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message en copie carbone (Cc) :
    envoyerCc = ""
    ' Indiquer ici le sujet de l'e-mail :
    Subject = "Test"
      
    Dim s As Object
    Dim docMail As Object
    Dim body As Object
    Dim stream As Object
    Set s = CreateObject("Notes.NotesSession")
      
    Set Db = s.CurrentDatabase
    s.ConvertMIME = False ' Do not convert MIME to rich text
      
    'Create email to be sent
    Set docMail = Db.CreateDocument
      
    With docMail
        .Form = "Memo"
        .SendTo = envoyerA
        .SendTo = envoyerB
        .copyTo = envoyerCc
        .Subject = Subject
        .From = s.COMMONUSERNAME
        .ReplyTo = s.COMMONUSERNAME
        '.Principal = FROM ADDRESS
                
    End With
      
      Set stream = s.CreateStream
    Set body = docMail.CreateMIMEEntity
    Call stream.WriteText("<h1>Une tâche en , World!</h1><ul><li>Une</li><li>Liste</li><li>À</li><li>Puce</li></ul>")
      '. écrire son message
    Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
      
    Call docMail.SEND(False)
    Set docMail = Nothing
    Set body = Nothing
    Set stream = Nothing
    
      
    MsgBox "Message envoyé"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Macro - Envoi liste en pdf par mail a une liste de destinataires

Bonsoir à tous

Par contre je ne trouve pas comment transformer "A10:B19" en .pdf
Un exemple pour transformer une plage de cellules en PDF
(test OK sur Excel 2013)
Code:
Sub test()
rangeToPdf "A10:B19", "C:\Temp\01test.pdf"
End Sub

Code:
Private Sub rangeToPdf(Plage$, strpath$)
Dim rng As Range, nfic$
Set rng = Range(Plage)
nfic = strpath
rng.ExportAsFixedFormat Type:=xlTypePDF, _
   fileName:=nfic, Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=True, _
   From:=1, To:=1, OpenAfterPublish:=True
End Sub

Je te laisse faire les adaptations nécessaires pour la suite.
(joindre le PDF au mail)

Si difficultés, voir sur le net et/ou dans les archives du forum (utilisant la loupe en haut à droite)
 

eldoctor62

XLDnaute Nouveau
Re : Macro - Envoi liste en pdf par mail a une liste de destinataires

Bonjour et merci pour ce code qui est ma foi nickel !!

Code:
Sub test()
rangeToPdf "A10:B19", "C:\Users\L0264687\Links\TEST.pdf"
End Sub
Private Sub rangeToPdf(Plage$, strpath$)
Dim rng As Range, nfic$
Set rng = Range(Plage)
nfic = strpath
rng.ExportAsFixedFormat Type:=xlTypePDF, _
   Filename:=nfic, Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=True, _
   From:=1, To:=1, OpenAfterPublish:=True
End Sub

Néanmoins j'ai beau creuser et chercher en vain j'ai du télécharger 20 feuilles excel mais les macro ni sont pas souvent :-/

Bon le résultat c'est que j'obtient bien mon fichier .pdf en visu a l'écran

Apres pour l'envoyer a une liste de destinataire en "A1:A4" ça se complique sérieux !

Il faut j'imagine faire 2 variables :
- La liste des adresses mails "A1:A4"
- Le fichier précédemment crée

J'ai récupéré ça ci-dessous ci une âme charitable veut bien m'aider a l'inclure dans le script

Code:
Sub EnvoiUnMail()
Dim MailAd As String
Dim Msg As String
Dim Subj As String
Dim URLto As String, CC As String
Sheets("Feuil1").Select 'Saisir le nom exact la feuille
ActiveSheet.Copy 'crée une copie de la feuille active
MailAd = Range("a1")
Subj = Range("b1")
Msg = Msg & Range("c1")
CC = Range("D1")
URLto = "mailto:" & MailAd & "?subject=" & Subj & "&cc=" & CC & "&body=" & Msg
ActiveWorkbook.FollowHyperlink Address:=URLto
ActiveWorkbook.Close 'ferme la copie de la feuille active
Application.DisplayAlerts = False
End Sub
 

Discussions similaires