Excel : Générer un PDF d'un onglet et l'inserer dans Outlook
Bonjour tout le monde,
Merci a tous ceux qui passent du temps a gérer ce site et nous aider
Je me débrouille avec les macro en faisant des petits morceaux, mais ça reste du chinois pour moi
J'ai trouvé une solution pour intégrer des PDF mais j'aimerai aller plus loin
J'ai fait la macro pour générer le PDF, tout est ok
> Depuis Excel, la macro génère un PDF de l'onglet Actif et le nomme d'après un numéro qui se trouve dans un cellule + le nom de l'onglet actif + un texte fixe.
Ca donne ça : "2002-EP-Demande de prix"
2002 = Info dans une cellule
EP = Nom de l'onglet
Demande de prix = Texte fixe
Macro pour OUTLOOK
J'ai fait une macro qui me demande de sélectionner un fichier et le mettre en PJ dans un mail OUTLOOK
Nickel tout fonctionne, j'ai même le destinataire, objet, contenu du mail
J'aimerai maintenant aller plus loin et positionner automatiquement le PDF dans le mail
Le ptit truc en plus c'est que le nom du fichier change mais pas le répertoire ou il se trouve
Le nom du fichier on peut le trouver car c'est toujours la même gymnastique (Cellule C2 + Nom onglet + Texte fixe)
Voila ce que j'ai actuellement
'Macro qui génère le PDF de mon Onglet Excel sur mon bureau
Sub PDF_Demande_devis()
dossier = "C:\Users\" & Environ("USERNAME") & "\Desktop\Temp"
Num_plan = Range("C2").Value
Descriptif = "Demande de prix"
nompdf = dossier & "\" & Num_plan & "-" & ActiveSheet.Name & "-" & Descriptif
Application.ScreenUpdating = False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nompdf & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
MsgBox "Votre PDF est disponible dans le répertoire TEMP sur votre bureau", vbInformation
ActiveSheet.Select
End Sub
'Macro qui génère le mail et demande une PJ
Sub EnvoiMail_Demande_Prix()
'Appel la macro pour générer le PDF dans le répertoire TEMP "C:\Users\" & Environ("USERNAME") & "\Desktop\Temp"
Call PDF_Demande_devis
Num_plan = Range("C2").Value
Dim Fichier As Variant
Fichier = Application.GetOpenFilename("Tous les fichiers(*.*),*.*")
MsgBox Fichier
'On déclare les variables
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.Application")
Set MonMessage = MaMessagerie.createitem(0)
MonMessage.To = "xxx@xxx.fr"
MonMessage.attachments.Add Fichier
MonMessage.Subject = Num_plan & " - Demande de prix - " & ActiveSheet.Name
contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Ci-joint une demande de prix "
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Bonne journée "
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Christophe"
MonMessage.body = contenu
MonMessage.Save
'.send si on veut envoyer directement
'.save si on met en brouillon
Set MaMessagerie = Nothing
End SubSi vous suivez toujours ça me rassure
Comment je peux éviter d'aller sélectionner le PDF dans mon répertoire TEMP ?
Comment peut-on le mettre automatiquement en PJ ?
Sachant que j'ai besoin de ce PDF dans ce répertoire pour le classer ensuite sur notre un serveur
J'ai l'info de comment il va s'appeler
nompdf = dossier & "\" & Num_plan & "-" & ActiveSheet.Name & "-" & DescriptifJ'ai l'endroit ou il se trouve
C:\Users\" & Environ("USERNAME") & "\Desktop\TempJe pense que ca se passe ici (entre autre)
Fichier = Application.GetOpenFilename("Tous les fichiers(*.*),*.*")Voilà :-)
Si qq peut m'aider j'en serai heureux pour mes équipes
Bonjour Cridule et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
Ainsi que sur les fonctionnalités (Nouveau Forum au bas de page notamment)
Vous trouverez tout ce qu'il vous faut (je pense) dans un classeur que j'ai mis à disposition
https://www.excel-pratique.com/fr/telechargements/utilitaires/pdf-email-vba-excel-no508
Merci de votre participation
Cordialement
Bonjour Bruno,
C'est super, exactement ce qu'il me faut, merci
Maintenant ça ne fonctionne pas sur mon classeur, je m'explique
Qd je lance ta macro sur ton fichier = Nickel, c'est ce dont j'ai besoin
Cette macro je l'ai copié sur mon classeur "personal" pour la rendre disponible à tout moment sur n'importe quel fichier excel
Et là ... ça coince ici
Sais-tu me dire pourquoi et comment l'adapter ?
Sheets(ShtName).ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=FalseChristophe
Salut Christophe,
Je pense que ça vient de là
Sheets(ShtName)Tu peux remplacer l'instruction par "ActiveSheet"
Explication, dans mon code du classeur, je définit le nom de la feuille à imprimer en PDF
ShtName = "Feuil1"A+
Hello,
Ca ne fonctionne pas ou j'ai pas tout saisie :-)
Voici ce que j'ai ecris
ActiveSheet(ShtName).ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=FalseRe,
Voici la ligne comme elle devrait être
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=FalseVous avez la possibilité de vous former ici
https://www.excel-pratique.com/fr/vba
Ca marche...
Purée c'est top ! Tu peux pas savoir le temps que ca va faire gagner aux équipes
Merci beaucoup d'avoir passé du temps pour moi
Je trouve ça génial ttes ces personnes qui peuvent nous aider
Bon WE