Problème pour convertir en PDF

  • Initiateur de la discussion Initiateur de la discussion Chris57
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chris57

XLDnaute Occasionnel
Bonjour,

je cherche à convertir un fichier Excel en PDF puis à l'envoyer par mail.

Le problème est que je dois le faire au boulot, sur des PC en réseau où tout installation est impossible.
J'ai tenté d'installér le complément
Détails du téléchargement : Complément de Microsoft Office 2007*: Enregistrement en PDF ou XPS dans Microsoft

mais il me met "Echec de l'installation de ce package", je suppose que cela provient justement des limitations sur les PC du boulot.

Donc impossible d'utiliser la fonction ExportAsFixedFormat !!


Il existe la solution ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""CutePDF Writer sur CPW2:"",,TRUE,,FALSE)" mais je ne trouve pas comment choisir le dossier de destination ou encore comment nommer le fichier pdf automatiquement.

Avez-vous une idée ?
 
Re : Problème pour convertir en PDF

Exact kiki29 le complément pdf est dans le sp2 pas dans le SP1 ce qui explique probablement pourquoi le code que j'ai fourni ne peut pas marcher.
Mais Chris 57 si tu as pu installer le SP1 (via windows update), tu dois pouvoir installer le SP2, dans la mesure ou ce n'est pas une installation au sens classique du terme.
Sinon désolée mais je n'ai aucune autre idée pour t'aider, n'ayant pas la même config que toi (je suis sous excel 2010) je ne peux rien tester.
 
Re : Problème pour convertir en PDF

Salut, mais visiblement tout le monde ne l'avait pas compris, même toi

Bin une chose est sûre, tout est verrouillé et comme je l'ai dit dans le premier post, on ne peut rien installer sur nos PC, pas même le SP2. Bon faut avouer qu'on a un parc de plus de 300 PC et pas mal d'utilisateurs qui ne maîtrisent pas l'informatique, donc normal que les admin ont verrouillé les installations !

Ce n'est pas moi qui est installé le SP1, ce sont les admin qui ont du le faire...

Par contre Il semblerait que tu puisses paramétrer CutePDF si l'on en croit leur site, perso je me refuse à installer un 3eme outil de conversion en PDF pour le tester.
C'est peut-être une piste, je savais pas que CutePDF était un plug indépendant. Je vais fouiller de ce côté.




[EDIT]
Bon, voici les premier résultats :

la commande
Code:
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""CutePDF Writer sur CPW2:"",,TRUE,,FALSE)"

est en fait la nouvelle manière pour Excel 2007 de traduire :

Code:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= "CutePDF Writer on CPW2:", Collate:=True
Comme d'hab microsoft fait de modifs inutiles qui embrouillent les gens... car en réalité la seconde commande fonctionne parfaitement sous 2007. C'est ainsi que 2003 transcrivait l'impression en PDF lorsqu'on enregistrait la manip en macro.

En fouinant j'ai trouvé ceci :
Code:
[A1:G50].PrintOut Copies:=1, preview:=False, ActivePrinter:="CutePDF Writer sur CPW2:", _
printtofile:=True, Collate:=True, prtofilename:="P:\PDF\tesft" & FundName & ".pdf"
ça fonctionne mais impossible d'ouvrir le fichier .pdf, il est illisible pour adobe... Il semble, si j'ai bien compris le site anglais, que le fait d'imposer un nom embrouille la manip.

Reste une solution moins fiable mais qui marche :
Code:
' Impression en PDF
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=   "CutePDF Writer on CPW2:", Collate:=True
   
' Pause de 2 secondes
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 2
waitTime = TimeSerial(newHour, newMinute, newSecond)
   Application.Wait waitTime

' Saisie auto du nom de fichier et clic sur entrée
Filename = ActiveSheet.Range("A1").Value & ".pdf"
   SendKeys Filename & "{ENTER}", False

Je vais tenter de paufiner ce code.
 
Dernière édition:
Re : Problème pour convertir en PDF

Salut,
Pour la macro XL4 voir ici , cette macro XL4 est à utiliser pour accélérer la Mise En Page d'un document.


[A1:G50].PrintOut Copies:=1, preview:=False, ActivePrinter:="CutePDF Writer sur CPW2:", _
printtofile:=True, Collate:=True, prtofilename:="P:\PDF\tesft" & FundName & ".pdf"
génère un fichier PS ( PostScript ) et non PDF. Sur leur site il parle d'utilitaire PS2PDF style Ghostscript qui ferait la conversion.
 
Dernière édition:
Re : Problème pour convertir en PDF

ah ok, c'est plus clair maintenant !

Voici le résultat final pour convertir une page excel en pdf puis l'envoyer par mail en pièce jointe :
Sub PDF_EnvoiEmail()

'Déclaration des variables
Dim ApplicOutlook As Object
Dim ElémentCourrier As Object
Dim cellule As Range
Dim Sujet As String
Dim Email As String
Dim Destinataire As String
Dim mois As String
Dim Msg As String
Dim ZONE As Range


' Vérifie de quelle page la macro est lancée (mon classeur contient 2 pages. Selon celle-ci, des variables sont différentes)

If ActiveSheet.Name = "Sécurité" Then
NOMfichierPDF = Replace(ActiveWorkbook.Name, ".xlsm", "") & " Sécurité - Eq" & [D8] & " - " & Format(Date, "mmmm yyyy")
Msg = "1/4 heure Sécurité de l'UP7/8 - équipe " & [D8] & " du mois de " & Format(Date, "mmmm") & vbCrLf & vbCrLf
Sujet = "1/4 heure Sécurité Exploit UP7/8 - Eq" & [D8]
Set ZONE = [B2:F38]
Else
NOMfichierPDF = Replace(ActiveWorkbook.Name, ".xlsm", "") & " Environnement - Eq" & [D8] & " - " & Format(Date, "mmmm yyyy")
Msg = "1/4 heure Environnement de l'UP7/8 - équipe " & [D8] & " du mois de " & Format(Date, "mmmm") & vbCrLf & vbCrLf
Sujet = "1/4 heure Environnement Exploit UP7/8 - Eq" & [D8]
Set ZONE = [B3:O56]
End If


' Enregistre en pdf (passe par une impression)
[Q15] = "PATIENTER..."
MsgBox ("Un fichier pdf va être enregistrer dans votre dossier sous P:\" & Chr(13) & "Ne rien faire jusqu'à l'apparition du mail, la macro se charge de tout !")

' Impression en PDF
Application.ActivePrinter = "CutePDF Writer sur CPW2:"

[ZONE].PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", Collate:=True

' Pause de 2 secondes
Application.Wait Now + TimeValue("00:00:03")

' Saisie auto du nom de fichier et clic sur entrée
Filename = "P:" & "\" & NOMfichierPDF

SendKeys Filename '& "{ENTER}", False
Application.Wait Now + TimeValue("00:00:01")
SendKeys "{ENTER}", False
[Q15] = ""

' Création du mail
'Création de l'objet Outlook
Set ApplicOutlook = CreateObject("Outlook.Application")

'Recherche des déstinataires
For Each cellule In _
Columns("Q").Cells.SpecialCells(xlCellTypeConstants)
If cellule.Value Like "*@*" Then

'Extraction des données
Destinataire = cellule.Offset(0, -1).Value
Email = cellule.Value
mois = Format(cellule.Offset(0, 1).Value)

' Piève jointe (fichier PDF
'NOMfichierPDF = Replace(ActiveWorkbook.Name, ".xlsm", "") & " - Eq" & [D8] & " - " & Format(Date, "mmmm yyyy")
Filename = "P:" & "\" & NOMfichierPDF & ".pdf"

'Création du message et envoi
Set ElémentCourrier = ApplicOutlook.CreateItem(0)

With ElémentCourrier
.Attachments.Add Filename
.To = Email
.Subject = Sujet
.Body = Msg
.Display

'Pour envoyer le courrier en automatique,
'activer le .Send ci-dessous
'.Send

End With
End If
Next

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

R
Réponses
2
Affichages
1 K
R
Retour