IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Sauvegarder une feuille excel en pdf et le copier directement dans Outlook


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Utilisateur occasionnel
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Utilisateur occasionnel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Sauvegarder une feuille excel en pdf et le copier directement dans Outlook
    Bonjour, je me suis créer une petite commande en vba pour transférer une feuille Excel directement dans Outlook. Par contre, j'aimerais transférer mon fichier en PDF avant de l'insérer dans Outlook afin d'éviter qu'il ne soit modifier par celui qui recevra le fichier.

    P.S.: j'utiliser Excel 2016

    Voici ma ligne de commande (en passant elle fonctionne très bien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub Envoi_Client()
     
     
     
    Dim MonOutlook As Object
    Dim MonMessage As Object
     
    ThisWorkbook.Sheets("Intrants").Select
     
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.CreateItem(0)
     
    MonMessage.To = Sheets("DONNEES_TECH").Range("Cou_Client").Value
    MonMessage.Cc = Sheets("Data").Range("Message_Cc").Value
     
    MonMessage.Subject = Range("Objet").Value
     
    MonMessage.Body = Range("Message_1") & _
        Chr(13) & Chr(13) & Range("Message_2") & _
        Chr(10) & Chr(10) & Range("Message_3") & _
        Chr(10) & Chr(10) & Range("Message_4") & _
        Chr(10) & Chr(10) & Range("Message_5") & _
        Chr(10) & Chr(10) & Range("Message_6")
     
     
     
    MonMessage.Attachments.Add ActiveWorkbook.Path & "\" & ThisWorkbook.Name
     
    MonMessage.Display
     
    Set MonOutlook = Nothing
     
    End Sub
    Merci à l'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MarGir Voir le message
    Quelques modèles chez Ron De Bruin

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Juste avant la ligne MonMessage.Attachments.Add ActiveWorkbook.Path & "\" & ThisWorkbook.Name, tu fais un export PDF.
    Voir ici pour savoir comment faire : https://msdn.microsoft.com/fr-fr/lib.../ff840291.aspx

    Ensuite, il suffit de modifier cette même ligne de code Attachements en indiquant le chemin et le nom du fichier PDF généré.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 98
    Points : 132
    Points
    132
    Par défaut
    Bonjour,
    Cette commande est native dans Excel. Il n'est pas besoin de faire une macro. On peut l'ajouter à la barre d'accès rapide.
    cordialement,

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Utilisateur occasionnel
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Utilisateur occasionnel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Pouvez-vous me donner d'avantage d'info
    Citation Envoyé par Menhir Voir le message
    Juste avant la ligne MonMessage.Attachments.Add ActiveWorkbook.Path & "\" & ThisWorkbook.Name, tu fais un export PDF.
    Voir ici pour savoir comment faire : https://msdn.microsoft.com/fr-fr/lib.../ff840291.aspx

    Ensuite, il suffit de modifier cette même ligne de code Attachements en indiquant le chemin et le nom du fichier PDF généré.

    Merci, mais étant donné que je suis novice en la matière, pourriez-vous me diriger d'avantage, j'ai inscrit ce texte et aucun fichier en pdf dans mon message Outlook.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ctiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myFile _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
     
    MonMessage.Attachments.Add ActiveWorkbook.Path & "\" & ThisWorkbook.Name

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je n'ai jamais fait d'envoi de mail en VBA.
    Pourtant, quand je lis dans un code MonMessage.Attachments.Add, ça semble relativement parlant, non ?

    As-tu l'impression que le fichier indiqué en paramètre de cet Attachment soit le PDF qui vient d'être généré ?
    Un petit indice pour la réponse : ThisWorkbook représente le fichier Excel dans lequel se trouve la macro.
    Pour le reste, il me semble que ActiveWorkbook.Path est plutôt parlant aussi comme code.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Utilisateur occasionnel
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Utilisateur occasionnel
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Désolé, mais mon niveau de vba est très limité, alors je ne comprend pas, voici mon code total, pourrais-tu m'aider à éclaircir le problème svp, merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Envoi_Client()
     
    Dim MonOutlook As Object
    Dim MonMessage As Object
     
    ThisWorkbook.Sheets("Intrants").Select
     
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.CreateItem(0)
     
    MonMessage.To = Sheets("DONNEES_TECH").Range("Cou_Client").Value
    MonMessage.Cc = Sheets("Data").Range("Message_Cc").Value
     
    MonMessage.Subject = Range("Objet").Value
     
    MonMessage.body = Range("Message_1") & _
        Chr(13) & Chr(13) & Range("Message_2") & _
        Chr(10) & Chr(10) & Range("Message_3") & _
        Chr(10) & Chr(10) & Range("Message_4") & _
        Chr(10) & Chr(10) & Range("Message_5") & _
        Chr(10) & Chr(10) & Range("Message_6")
     
    'Export en PDF
     
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myFile _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
     
    MonMessage.Attachments.Add ActiveWorkbook.Path & "\" & ThisWorkbook.Name
     
    MonMessage.display
     
    Set MonOutlook = Nothing
     
    End Sub

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Déjà, tu devrais précéder ton code d'une instruction Option Explicit, ce qui t'obligerait à déclarer tes variables.
    Tu t'apercevrais ainsi que la variable "MyFile" n'a jamais été ni déclarée ni renseignée, ce qui fait que ton fichier PDF est enregistré... on ne sait pas où ni sous quel nom (vraisemblablement aucun).
    C'est souvent ce qui se produit lorsqu'on recopie un code sans essayer de le comprendre.

Discussions similaires

  1. [XL-2010] Imprimer page 2 d'une feuille excel en PDF vers Outlook par macro
    Par patmicro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2016, 22h57
  2. [XL-2007] Convertir une feuille excel en pdf
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/08/2014, 15h44
  3. [XL-2007] Convertir une feuille excel en pdf
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2014, 15h11
  4. Réponses: 4
    Dernier message: 26/09/2012, 17h08
  5. Mettre une feuille Excel en pdf
    Par bibi5883 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 10/08/2007, 18h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo