Envoi feuille en format PDF par email
Bonjour à tous
Je sais que ce thème a été traité à maintes reprises, mais je n'ai pas trouvé la solution à mon problème
Je souhaite pouvoir envoyer ma page "Formular" en PDF par email.
J'ai mes références, mes textes, mes correspondances, mon corps de texte.
Dans ma macro ci-dessous, (qui fonctionne) le fichier s'enregistre sur le réseau.
Je souhaite créer une macro similaire. Mais l'utilisateur ne sera pas connecté sur le réseau.
Je souhaite également éviter que le fichier PDF créer s'enregistre sur C: ou son bureau...
1) Existe-t-il de moyen de créer un fichier temporaire et de l'effacer en fin de procédure ?
2) Enfin, existe-t-il le moyen de vérifier si l'utilisateur dispose d'Outlook, auquel cas, le fichier PDF doit se créer et un message d'avertissement doit informer l'utilisateur que le fichier est sur son bureau.
Une solution - si vous pouvez m'aider est prioritaire au point 1)
Ma macro:
Sub Envoi_PDF()
Application.ScreenUpdating = False
Sheets("Formular").Select
ActiveSheet.PageSetup.PrintArea = "F8:AA70"
Dim olApp As Outlook.Application
Dim olMail As MailItem
Dim CurFile As String
Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)
Dim Path As String, Nom As String
Sheets("Settings").Select
File = Range("E5")
Datum = Format(Range("F5"), "yyyymmdd hh.mm")
Sheets("Formular").Select
CurFile = "\\IFC1.IFR.INTRA2.ADMIN.CH\Shares\Organisation\RECEPTION PDF\" & File & " - " & Datum & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CurFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
With olMail
.To = Sheets("Settings").Range("G5").Value
.Subject = Sheets("Settings").Range("H5").Value
.Body = Sheets("Settings").Range("I5").Value
.Attachments.Add CurFile
.Display '.Send
ActiveSheet.PageSetup.PrintArea = ""
End With
'ActiveSheet.Protect "XXX.XXX"
Range("A1").Select
Sheets("FORMULAR").Select
Range("A1").Select
ActiveSheet.PageSetup.PrintArea = ""
Sheets("FORMULAR").Select
Application.ScreenUpdating = True
End Sub
Une modification possible avec mes codes "CurFile" ?
D'avance merci !
Cordialement
Willau
Bonjour,
Je souhaite également éviter que le fichier PDF créer s'enregistre sur C: ou son bureau...
1) Existe-t-il de moyen de créer un fichier temporaire et de l'effacer en fin de procédure ?
Enregistre le dans le dossier temp et supprime le en fin de procédure
nompdf = Environ("Temp") & "\" & "monfichier"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Set messagerie = CreateObject("Outlook.Application")
Set email = messagerie.CreateItem(0)
With email
.to = [destinataire]
.Subject = [titre]
.body = "Veuillez trouver en pièce jointe ..."
.ReadReceiptRequested = True
.Attachments.Add nompdf & ".pdf"
.display
End With
Set email = Nothing
Set messagerie = Nothing
Kill Environ("Temp") & "\" & "monfichier" & ".pdf"
Je souhaite également éviter que le fichier PDF créer s'enregistre sur ... son bureau...
... un message d'avertissement doit informer l'utilisateur que le fichier est sur son bureau.
Il n'y a pas une sorte d'incompatibilité dans ton sujet ?
Pour tester la présence d'outlook :
Sub test_outlook()
Dim messagerie As Object
On Error GoTo err_handler
Set messagerie = CreateObject("Outlook.Application")
err_handler:
MsgBox "L'application Outlook est absente de ce poste de travail !"
End Sub
- Messages
- 4'094
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Salut Steelson.
ci-dessous ton code remanié avec les mêmes éléments que la réponse de Steelson
Sub Envoi_PDF()
Dim olApp As Object, olMail As Object
Dim file As String, CurFile As String, datum As String
On Error Resume Next
'Assignation de l'application Outlook et de l'objet olMail
Set olApp = CreateObject("outlook.application")
If Err.Number <> 0 Then MsgBox "erreur : application Outlook non disponible": Exit Sub
Set olMail = olApp.CreateItem(0)
'remplissage du message
With Sheets("Settings")
olMail.to = .Range("G5").Value
olMail.Subject = .Range("H5").Value
olMail.Body = .Range("I5").Value
file = .Range("E5")
datum = Format(.Range("F5"), "yyyymmdd hh.mm")
CurFile = Environ("tmp") & "\" & file & " - " & datum & ".pdf"
Sheets("Formular").ExportAsFixedFormat Type:=xlTypePDF, Filename:=CurFile, OpenAfterPublish:=False
olMail.Attachments.Add CurFile
End With
'....... envoie le message
olMail.Send
Kill CurFile
If Err.Number <> 0 Then MsgBox "erreur : " & Err.Description & " destinataire = " & olMail.to: Exit Sub
'Désassignation objets
Set olApp = Nothing
Set olMail = Nothing
End Sub