Microsoft 365 Création PDF à partir d'une plage de données et l'insérer dans un email Outlook sur une meme macro

gbstyle

XLDnaute Impliqué
Bonjour voici mon petit problème
J'ai une macro qui me permet de créer un pdf et le sauvegarder sur mon dossier
VB:
Sub Convert_PDF_Cmd()
Application.ScreenUpdating = False
    Range("A1:K53").Select
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Sylvain\OneDrive\ACDC\Exportation\BC " & Range("I3") & Range("G7") & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
    Range("A1").Select
    
End Sub

J'ai une deuxième macro qui me permet d'ouvrir outllook avec ajout destinataire automatique
Code:
Sub nouvelleentreeOI()

'Libération des variables
Set ObjOutlook = Nothing

Dim olApp As Outlook.Application
Dim olmail As Outlook.MailItem

Set olApp = New Outlook.Application
Set olmail = olApp.CreateItem(olMailItem)

With olmail
     .To = Range("G15")
     .Subject = "Bon de commande" & "     " & Range("I3")
     .Body = "Bonjour," & vbCrLf & "Ci joint Bon de commande." & vbCrLf & "Cordialement." & vbCrLf & "Sylvain LECORDIER."
     .Display
End With

Set olmail = Nothing
Set olApp = Nothing

Set MaMessagerie = Nothing
'MsgBox "votre mail a bien été envoyé"
End Sub

Mon objectif avoir les 2 réunis et je n'y arrive pas. Y a t'il quelqu'un qui pourrait m'aider :/ je galère depuis un bon moment
Bien amicalement
Gbstyle
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Gbstyle

Gbstyle
Pour info, ta macro (en un peu plus léger) ;)
VB:
Sub Convert_PDF_Cmd_light()
Dim strPath$, Nfic$
strPath = "C:\Users\Sylvain\OneDrive\ACDC\Exportation\"
Nfic = "BC " & Range("I3") & Range("G7") & ".pdf"
Range("A1:K53").ExportAsFixedFormat Type:=0, Filename:=strPath & Nfic, Quality:=0
End Sub

Pour le reste, puisque tu sélectionnes un plage de cellules, tu ne veux l'envoyer directement dans le corps du mail?
Tu veux absolument la joindre en PDF?
 

gbstyle

XLDnaute Impliqué
Bonjour
En effet je veux le joindre en PDF car ce sont des données que je ne souhaite pas etre modifiable. d'où l'objectif d'utiliser pdf.
merci pour cette première modif, en effet même si mon code fonctionner très bien le tient est en effet plus court :/ lol

Mon deuxième code m'ouvre bien Outlook et mon mail avec mon cord et ma selection automatique du destinataire cependant joindre la selection de plage et convertis en pdf c'est un peu plus compliqué pour mon niveaux :/
 

Staple1600

XLDnaute Barbatruc
Re

Essaies comme ceci alors
VB:
Sub Convert_PDF_Et_Envoi_Par_Mail()
Dim strPath$, Nfic$
strPath = "C:\Users\Sylvain\OneDrive\ACDC\Exportation\"
Nfic = "BC " & Range("I3") & Range("G7") & ".pdf"
Range("A1:K53").ExportAsFixedFormat Type:=0, Filename:=strPath & Nfic, Quality:=0
With CreateObject("Outlook.Application").CreateItem(0)
        .To = "staple1600@aufonducouloirdernierbureau.com" 'mets ton adresse mail pour tester
        .Subject = "test envoi PDF"
        .Attachments.Add strPath & Nfic
         .Display
        '.Send 'pour envoyer
    End With
End Sub
 
Dernière édition:

gbstyle

XLDnaute Impliqué
VB:
Sub Convert_PDF_Et_Envoi_Par_Mail()
Dim strPath$, Nfic$
strPath = "C:\Users\Sylvain\OneDrive\ACDC\Exportation\"
Nfic = "BC " & Range("I3") & Range("G7") & ".pdf"
Range("A1:K53").ExportAsFixedFormat Type:=0, Filename:=strPath & Nfic, Quality:=0
With CreateObject("Outlook.Application").CreateItem(0)
        .To = "xxx@gmail.com" 'mets ton adresse mail pour tester
        .Subject = "test envoi PDF"
        .Attachments.Add strtPath & Nfic
         .Display
        '.Send 'pour envoyer
    End With
End Sub

ca ne fonctionne pas chemin pas trouver, curseur jaune sur .Attachement.ADDstrt
 

gbstyle

XLDnaute Impliqué
idem avec ceci
VB:
Sub Convert_PDF_Et_Envoi_Par_Mail()
Dim strPath$, Nfic$
strPath = "C:\Users\Sylvain\Documents\ACDC\"
Nfic = "BC " & Range("I3") & Range("G7") & ".pdf"
Range("A1:K53").ExportAsFixedFormat Type:=0, Filename:=strPath & Nfic, Quality:=0
With CreateObject("Outlook.Application").CreateItem(0)
        .To = "XXX@gmail.com" 'mets ton adresse mail pour tester
        .Subject = "test envoi PDF"
        .Attachments.Add strtPath & Nfic
         .Display
        '.Send 'pour envoyer
    End With
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Utilisez l'explorateur d'objets, vous auriez pu y trouver tout seul la collection Attachements de l'objet MailItem, puisque vous aviez apparemment coché la référence. De plus inutile du coup de passer par ce satané CréateObject !
Mettez Option Explicit en tête de vos module. Là ça vous aurais permis de voir tout de suite que votre variable StrtPath est mal orthographiée par rapport à sa déclaration.
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb,
comme toujour tes retours sont efficaces, mais ton vocabulaire est trop sophistiqué pour des novices comme nous :p.
j'aurai préféré une explication plus simple lol
D'ailleur je ne vois pas pourquoi tu dis que le créateobjetct n'est pas necessaire :/
 

gbstyle

XLDnaute Impliqué
Yes merci, j'ai fait quelque modif subjet et ajouter un body pour le corp du message
Tout fonctionne ;)
Même si je n'est toujour pas compris l'histoire du create object qui ne plaisait pas :p

Staple600 je serais interessé aussi par ta proposition en mettant les donnée directement dans le corp du mail ;)
Encore merci
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki