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 :

Macro pour envoi PDF par courriel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut Macro pour envoi PDF par courriel
    Bonjour à tous, j'aime bien l'idée de pouvoir envoyer une feuille en format PDF par courriel. J'ai vérifié dans différents forum quelques discussions sur le sujet, mais je n'ai rien trouvé qui puisse faire ce dont j'ai besoin, ou je ne sais pas comment modifier le code pour que cela fonctionne.

    J'ai un classeur qui me permet d'enregistrer des commandes de transport. En cliquant sur un bouton pour créer la commande, elle s'imprime en format PDF, est enregistrée en format xls dans un répertoire où figurent les autres commandes et une inscription est faite dans le calendrier Outlook. Les commandes sont enregistrées selon leur numéro et le nom du client. Bien sûr, chaque commande a un numéro différent.

    Comment faire pour envoyer une copie de cette commande format PDF par courriel automatiquement à sa création?

    Merci pour votre aide,

    Claude

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    j'ai élagué ce code que tu peux adapter, si tu bloques sur la ligne en rouge vérifie que tu as le complément pour imprimer en PDF (sur excel 2007)
    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
    Sub suite_imp()
    Dim nom As String, ol As New Outlook.Application
    Dim olmail As MailItem, admail As String
    'ci-dessous, on prend les mails dans une feuille
    derlg = Sheets("mails").Range("a" & Sheets("mails").Rows.Count).End(xlUp).Row
    Sheets("ta feuille à envoyer").select
    Sheets("ta feuille avec zone d'impression définie éventuellement").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
       "C:\ton chemin complet & nom de la feuille sans extension", Quality:= _
       xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
       OpenAfterPublish:=False
    nom = "C:\ton chemin complet & nom de la feuille sans extension" & ".pdf"
    messmail = "ton texte dans le mail"
    For i = 2 To derlg 'boucle du début à la fin de ta colonne des adresses mail
       admail = admail & Sheets("mails").Range("a" & i)
       If i = derlg Then Exit For
       admail = admail & "; "
    Next i
    Set ol = New Outlook.Application
    Set olmail = ol.CreateItem(olMailItem)
    With olmail
       .To = admail
       .Subject = "objet du mail" 'Sujet
       .Body = messmail 'Corps du mail
       .Attachments.Add nom
        End If
        .Display '.Send     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
    End With
    End Sub
    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut
    Bonsoir et merci pour ton aide, quelques points:

    Pourquoi faut-il le complément pour imprimer en PDF sur Excel? J'utilise déjà CutePDF qui imprime mon fichier xlsm en format PDF avec une macro.

    Le nom de la feuille imprimée est sous la forme 100100 - Nom du client. À chaque commande, le numéro et le nom du client est différent.

    Je dois toujours envoyer le document en PDF à la même personne par e-mail.

    J'ai essayé d'inclure une copie de mon classeur, mais le format xlsm n'est pas autorisé sur ce forum, cela aurait été plus facile pour visualiser ce que je fais déjà avec mon classeur...

    Merci,

    Claude

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,à partir d'Excel 2007 SP2 l'enregistrement en Pdf est inclus en natif,il n'y a plus lieu d'ajouter un complément ou d'utiliser un utilitaire extérieur

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le forum, kiki29, Klode784

    Je dois toujours envoyer le document en PDF à la même personne par e-mail.
    il suffir d'adapter ma proposition
    J'ai essayé d'inclure une copie de mon classeur, mais le format xlsm n'est pas autorisé sur ce forum, cela aurait été plus facile pour visualiser ce que je fais déjà avec mon classeur...
    tu l'envoies en zip

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut
    Bonjour kiki29 et casefayere,

    Merci pour vos réponses. Je vais donc installer le complément pour PDF. J'ai regardé vos statuts de membre et je suis très impressionné! En ce qui me concerne, je suis membre nul!!! J'aurais dû y penser d'envoyer mon classeur en format zip.

    Je joins donc une copie de mon classeur. Je vous avise que je ne l'ai pas monté seul, comme je l'ai dit je suis nul. J'ai eu beaucoup d'aide et j'ai ajusté certaines choses par moi-même. J'en suis à mes premières armes en VBA. Je peux dire que je me débrouille un peu...

    Encore merci de bien vouloir m'aider,

    Claude
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    j'ai regardé ton fichier et tes codes, ou la la il y a du boulot et plein d'erreurs.
    avec Option explicit, tu comprendrais vite, mais immédiatement, j'ai adapté à ta demande pour enregistrer et envoyer en PDF, lis bien toutes les annotations pour adapter à tes besoins
    à mettre dans ton bouton de commande, j'ai simulé que tu avais ajouté le mail du client en B9
    en grisé, ce qui devient inutile + explications
    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()
    Dim nom As String, ol As New Outlook.Application, derlg As Integer
    Dim olmail As MailItem, admail As String, messmail As String, i As Integer
    'ci-dessous, on prend les mails dans une feuille
    'derlg = Sheets("mails").Range("a" & Sheets("mails").Rows.Count).End(xlUp).Row
    With Sheets("contrat")
       .Select
       'si le dossier ou tu veux garder le PDF est dans un sou-repertoire de ce fichier xlsm, admettons "ARCHIVES"
       nom = ThisWorkbook.Path & "\" & "ARCHIVES" & "\" & .Range("E8") & .Range("B10") & ".pdf"
       MsgBox nom
       .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          nom, Quality:= _
          xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
          OpenAfterPublish:=False
    End With
    messmail = "Exemple : ci-joint votre commande,..."
    'ci-dessoue envoyer à tout le monde
    'For i = 2 To derlg 'boucle du début à la fin de ta colonne des adresses mail
       'admail = admail & Sheets("mails").Range("a" & i)
       'If i = derlg Then Exit For
       'admail = admail & "; "
    'Next i
    'si tu mets le mail en B17
    admail = .Range("B17")
    Set ol = New Outlook.Application
    Set olmail = ol.CreateItem(olMailItem)
    With olmail
       .To = admail
       .Subject = "exemple : commande effectuée" 'Sujet
       .Body = messmail 'Corps du mail
       .Attachments.Add nom
        .Display '.Send     'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer et le vérifier(display)
    End With
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 69
    Par défaut
    Bonsoir à tous, finalement à force de recherches, d'essais infructueux et votre précieuse aide en me donnant diverses pistes, j'ai finalement obtenu ce que je voulais. Premièrement j'ai viré cutePDF et installé le complément office Save as PDF/XPS et j'ai adapté les lignes de codes pour mon usage et ça fonctionne très bien. Je partage les lignes de code que j'ai ajouté à ma macro, si cela peut servir à aider quelqu'un d'autre.

    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
    'exporter en format PDF
     ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=dossierSauvegarde & "\" & NomFichier & ".pdf" _
     , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
     :=False, OpenAfterPublish:=False
     
    'Démarrer Outlook automatiquement
     Shell "C:\Program Files\Microsoft Office\Office12\Outlook.exe"
     
    'envoyer fichier PDF par courriel
     Dim ol As New Outlook.Application
     Dim olmail As MailItem
     Dim CurrFile As String
     Set ol = New Outlook.Application
     Set olmail = ol.CreateItem(olMailItem)
     With olmail
     .To = 'adresse destinataire
     .Subject = ("Nouvelle commande") 'ici le sujet
     .Body = 'ici le corps du mail
     .Attachments.Add dossierSauvegarde & "\" & NomFichier & ".pdf" 'ici la pièce jointe
     .Display '.Display /Send : Display correspond à l'affichage du message / Send demande un envoi direct
     End With
    C'est peut-être pas parfait ni trop propre comme code, mais ça fait le boulot.

    -Casefayere: Un jour quand je maîtriserai VBA un peu mieux, je nettoierai le code et les erreurs...

    Encore merci à tous,

    Claude

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro pour sauvegarde pdf et envoie en pièce jointe automatique
    Par toast-nc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/03/2015, 12h20
  2. Réponses: 2
    Dernier message: 22/11/2012, 10h00
  3. Macro pour envoi PDF par courriel
    Par Ambrocbt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/10/2011, 10h34
  4. [WD-2003] Macro pour envoi par email
    Par relenaheero dans le forum VBA Word
    Réponses: 11
    Dernier message: 22/11/2010, 20h42
  5. envoi PDF par mail
    Par the_6L20 dans le forum Access
    Réponses: 13
    Dernier message: 26/02/2007, 14h52

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