Convertir un fichier pdf pour envoi automatique par mail

Ben Becker

XLDnaute Nouveau
Bonjour à tous,

avec l'aide du forum, j'avais récupéré un code VBA pour convertir une feuille Excel en pdf puis l'envoyer par mail. Ce code fonctionne très bien, mais il ne marche que pour l'envoi d'une feuille du classeur. Je voudrais appliquer ce code pour plusieurs feuilles du classeur (ne générant qu'un seul fichier pdf) : ayant 13 feuilles dans mon classeur, je voudrais envoyer de la feuille 2 à la feuille 13.
Je sèche un peu, donc si vous avez une idée je suis preneur.
Merci d'avance pour votre aide.
Vous trouverez ci-dessous le code actuel.

Ben


Option Explicit

Sub Suivi_prono()
Dim objMessage As CDO.Message
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String

sNomPDF = "Suivi prono _ " & [AC1].Value & ".pdf"
sCheminPDF = "D:\documents\"
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")

With JobPDF
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sCheminPDF
.cOption("AutosaveFilename") = sNomPDF

' 0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
.cOption("AutosaveFormat") = 0

.cClearCache
End With

ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

'Fichier dans la file d'attente
Do Until JobPDF.cCountOfPrintjobs = 1
DoEvents
Loop
JobPDF.cPrinterStop = False

'Attendre que la file d'attente soit vide
Do Until JobPDF.cCountOfPrintjobs = 0
DoEvents
Loop
JobPDF.cClose
Set JobPDF = Nothing

Set objMessage = CreateObject("CDO.Message")
With objMessage
.Subject = "Suivi prono _ " & [AC1].Value
.From = "xxx@hotmail.fr"
.To = "zzz@hotmail.fr"
.TextBody = "Bonjour, la nouvelle fiche du " & [AC1].Value & " est arrivée. Bise"
.AddAttachment sCheminPDF & sNomPDF
.Send
End With

Set objMessage = Nothing

End Sub
Sub SuppProcPDFCreator()
Dim RetVal As Variant
RetVal = Shell("Taskkill /IM PDFCreator.exe /F", 0)
End Sub


ps : AC1 reprend la date du jour et cela sur toutes les feuilles
 

Ben Becker

XLDnaute Nouveau
Re : Convertir un fichier pdf pour envoi automatique par mail

Bonjour à tous,

après quelques recherches complémentaires, j'ai pu résoudre mon problème : il fallait remplacer

ActiveSheet.PrintOut copies:=1

par

Sheets(Array("Feuil2", "Feuil3",....,"Feuil13")).PrintOut copies:=1

Par contre au niveau de l'envoi du mail, j'essaye de rentrer plusieurs adresses mail sur la ligne de code ".To ="...mais je tombe sur une erreur d'execution 13.
J'ai juste testé deux méthodes :

.To = "yyy@hotmail.fr" , "zzz@hotmail.fr"
.To = Array("yyy@hotmail.fr" , "zzz@hotmail.fr")


Sans succès.

Merci par avance.

Ben
 

Hulk

XLDnaute Barbatruc
Re : Convertir un fichier pdf pour envoi automatique par mail

Hello,

Sans certitude, essaye ceci...
Code:
.To = "yyy@hotmail.fr"
.Cc = "xxx@xxxx.xx ; xxxxx@xxxxx.xx ; xxxxxxxxx@xx.xx"
C'est à dire, un guillemet au début et un à la fin et tu sépares les adresses par des points-virgules ;

Edit : Je pense que tu peux éviter le .Cc mais faire pareil que comme expliqué avec le .To

Cdt, Hulk.
 
Dernière édition:

armelle1303

XLDnaute Junior
Re : Convertir un fichier pdf pour envoi automatique par mail

bonjour Ben Becker

je me suis inspirée de ton code pour créer des pdf (j'ai enrichi celui ci avec un formulaire pour créer une copie avec un chemin et un nom spécifique... bref ceci n'a pas d'importance pour mon problème). Maintenant j'arrive à l'envoi par mai du pdf en PJ.
Mais tout de suite un problème lors de la déclaration :
Dim objMessage As CDO.Message
me renvoie : type défini par l'utilisateur non défini
j'ai regardé dans références pour ajouter une biblio mais je n'ai pas trouvé.
As tu eu cette erreur? Comment l'as tu solutionnée?

ce code me plait bien car il est simple. mais cela marche t il avec outlook, ou autre messagerie type Thunderbird ou toutes les messageries?

je n'ai jamais fais de macro pour les mails et je m'inquiète un peu quand je vois la complexité de certains exemples trouvés.
En espérant que tu n'as pas clôturé cette discussion

Armelle
 

armelle1303

XLDnaute Junior
Re : Convertir un fichier pdf pour envoi automatique par mail

RE

oups , en fait en fouinant encore sur le forum j'ai trouvé la bib :
Cocher Microsoft CDO for Exchange xxxx Library

et je l'ai bien trouvée dans Références

je n'avais pas bien regardé.

bon merci encore pour tout ce code sans lequel j'aurais pu avancer (pour le pdf et le mail).

Armelle
 

Discussions similaires

Réponses
2
Affichages
275
Réponses
0
Affichages
158

Statistiques des forums

Discussions
312 360
Messages
2 087 594
Membres
103 604
dernier inscrit
CAROETALEX59