Créer une macro pour faire un pdf et l'envoyer avec Outlook

loiselma

XLDnaute Nouveau
Bonjour à tous,

Après au moins 3 ans que je ne suis pas revenu sur ce site du fait que je ne travaillait que très peu avec excel, faute des applicatifs entreprises... je cherche désormais un moyen de créer une macro pour me simplifier la vie.
Cette macro doit prendre une feuille excel, la transformer en pdf puis l'envoyer par outlook.
J'ai trouvé plein de "morceaux" de codes mais étant très débutant, je vois toujours le message : "erreur de compilation... type non défini par l'utilisateur". Je sais que c'est un sujet déjà évoqué mais je ne trouve pas la source du problème :( Je suis sur Excel 2007.
Je suis perdu après trois jours de tentatives infructueuses.

Voici le code sur lequel je travaille:

Sub PDF_Mail2()

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("factures clients")
.Select
'si le dossier ou tu veux garder le PDF est dans un sou-repertoire de ce fichier xlsm, admettons "ARCHIVES"
nom = ThisWorkbook.Path & "\" & "factures clients" & "\" & .Range("a1") & .Range("h42") & ".pdf"
MsgBox nom
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nom, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
OpenAfterPublish:=False
End With

'Set ol = New Outlook.Application
'ol As New Outlook.Application

messmail = "ci-joint votre commande qui commence à sérieusement me les briser..."
'ci-dessous envoyé à 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 B20
admail = .Range("B20")
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


Est-ce que quelqu'un a une idée d'où vient le bugg?

Merci d'avance de votre aide.
Marc
 

loiselma

XLDnaute Nouveau
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Bonjour Bougla,

Merci pour ta réponse rapide.
Je te joins le fichier sans les présentations comme demandé.
N'étant pas un Pro des macros, j'ai essayé de "bidouiller" sans succès le bouton "pdfmail3" après plusieurs tentatives.
Ce que je cherche à faire c'est d'imprimer la facture (onglet facture), en appuyant sur le bouton et que la fiche excel soit transformée en pdf pour être envoyée directement au client copie mon adresse mail.
Par la suite je verrai s'il est possible de faire les choses suivantes dans une seule macro:
1/ Enregistrer cette facture dans un fichier avec comme nom la date (ex: 201605tintin)
2/ Créer un historique de chaque client
Mais pour l'instant j'en suis pas là :) Je vais avancer à taton.
Pourrais-tu stp me mettre les commentaires que je puisse comprendre mes erreurs pour apprendre?

Merci de ton aide sur ce sujet
@ bientôt,
Marc
 

Pièces jointes

  • 1_04_2016_avec macros__ss présentation.xlsm
    44 KB · Affichages: 52

Bougla972

XLDnaute Occasionnel
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Re Loiselma,

Le problème vient de cette ligne:
Code:
nom = ThisWorkbook.Path & "\" & "factures clients" & "\" & .Range("a1") & .Range("h42") & ".pdf"

où .Range("a1") et .Range("h42") sont vides... qui plus est H42 est une cellule fusionnée..

essaye de rentrer en A1 le nom que tu souhaites du document PDF généré, enlèves "& .Range("h42") " si celle-ci est inutile...

A te lire

Bougla
 

loiselma

XLDnaute Nouveau
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Bonjour Bougla, (nouvelle journée pour moi avec 10h d'avance sur la France...)

J'ai opéré les modifs mais ça bloque toujours à la première ligne avec une erreur de compilation:
" , ol As New Outlook.Application, ça devient frustrant.

@+
Marc
 

Bougla972

XLDnaute Occasionnel
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Bonjour Loiselma,

Il te faut activer les références dans le VBE (ALT+ F11) et ensuite Menu "Outils" => "Références" puis actives la référence "Microsoft Outlook xxxx Object Library" (selon la version d'Outlook).
Sans titre.png
A+
Bougla
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    27.2 KB · Affichages: 47

loiselma

XLDnaute Nouveau
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Bonjour Bougla,

Super je progresse avec ton aide.
Désormais, la macro coince à cet endroit, je remet le code complet:

Sub PDF_Mail2()

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("factures clients")
.Select
'si le dossier ou tu veux garder le PDF est dans un sou-repertoire de ce fichier xlsm, admettons "ARCHIVES"
nom = ThisWorkbook.Path & "\" & "factures clients" & "\" & .Range("a1") & ".pdf"
MsgBox nom
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nom, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
OpenAfterPublish:=False

End With
messmail = "ci-joint votre commande,..."
'ci-dessous 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")
monItem.To = [b20].Value
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


Et là je ne sais pas du tout ce qui se passe :(

Merci de ton précieux coup de main.

@+
Marc
 

loiselma

XLDnaute Nouveau
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Re...

Oui il est bien présent mais ça bloque sur les lignes en jaune.
Voici les quatre lignes qui posent problème:

.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nom, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=True, _
OpenAfterPublish:=False

C'est bizarre, est-ce que c'est le code qui pourrait être différent sous un vieux excel 2007 comme le mien?

@+
Marc
 

Bougla972

XLDnaute Occasionnel
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Re,

J'utilise également Excel 2007 donc ce n'est pas probablement pas le problème.
Vérifies si toutes les références sont cochées.
Sans titre.png

Bougla
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    25.1 KB · Affichages: 51

loiselma

XLDnaute Nouveau
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Non, j'ai Foxit Reader PDF. Il faut que j'installe impérativement Adobe Reader?

Mais où est-ce que je peux savoir dans les lignes de code quel logiciel sélectionner? C'est un labyrinthe pour moi :(
En tout cas merci beaucoup pour ton investissement car on va y arriver!

Marc
 

Modeste

XLDnaute Barbatruc
Re : Créer une macro pour faire un pdf et l'envoyer avec Outlook

Bonjour loiselma, Bougla,

Pas certain que l'installation d'Acrobat Reader solutionne le problème!? N'y avait-il pas un complément à télécharger, sous 2007, pour pouvoir enregistrer une feuille au format .pdf?
 

Discussions similaires

Réponses
7
Affichages
538
Réponses
2
Affichages
586

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette