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 Sub

Si 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 & "-" & Descriptif

J'ai l'endroit ou il se trouve

C:\Users\" & Environ("USERNAME") & "\Desktop\Temp

Je 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:=False

Christophe

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:=False

Re,

effectivement pas tout saisi, mais je n'ai pas été non plus assez explicit

Voici la ligne comme elle devrait être

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPath & sFileName, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Vous 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

Rechercher des sujets similaires à "generer pdf onglet inserer outlook"