Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Imprimer vers pdf nommé nouveau fil

70 réponses
Avatar
rthompson
Bonjour à toutes et tous

Je me suis permis de commencer un nouveau fil
Pour deux raisons
Primo, je commence à me perdre dans l'autre
Et puis ceci intéresse peut-être d'autres

Mais que tout ceci ne m'empêche pas de remercier ceux qui m'aident
JPS, Lsteph, Trirème, Philippe, François

On approche du but !!!!!!

Pour rappel, il s'agit de faire imprimer une feuille Excel (pas le tout)
vers un fichier PDF

Commençons par un bout de code qui fonctionne
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Range("C4").Select
Selection.Copy
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("E2").Select
Application.CutCopyMode = False
Range("E2").Select
Selection.Copy
Application.CutCopyMode = False
Application.ActivePrinter = "CutePDF Writer on CPW2:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"CutePDF Writer on CPW2:", Collate:=True

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ce code fonctionne, mais demande confirmation d'un nom de fichier
Et prend comme nom par défault celui du fichier
Et il crée un fichier (une seule feuille) lisible par Acrobat de 150Kg

Et ce n'est pas le but rechercher
Donc après moulte échanges j'ai trouvé ce code-ci
On change juste les dernières lignes

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Application.ActivePrinter = "CutePDF Writer on CPW2:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, PrintToFile:=True,
PrToFilename:="PDFname.pdf"
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Ce code-ci tourne jusqu"au bout, sans message de confirmation
Juste une fenêtre "Printing to Cute....." pendant quelques secondes
Il crée un fichier PDFname.pdf de 250Kg dans le répertoire du fichier
Mais quand j'essaie de l'ouvrir Acrobat me dit
que ce n'est pas un fichier pdf ou qu'il est tronqué ou endommager


Alors je continue mais si ceci vous dit quelque chose
N'hésitez pas

A très bientôt

Rex

10 réponses

3 4 5 6 7
Avatar
lSteph
Bonsoir,
Merci de ton intérêt
(Sal*** d'interface pour les fils à rallonge :-( )
et en plu on écrit à un endroit on se retrouve ailleurs...


l'idée faire un petit assistant ou tu choisis une destination
répertoire
(ça pas de problème)
et ensuite ce qui doit être dans le document final par exemple
Un classeur Excel avec 36 feuilles (ce qui ne marche pas comme il faut
avec les produits de la marque que je ne cite pas car propose chaque
fois une cible pour enregistrer)
Partant de ta macro voilà comment je verrais cela

' Print the Excel range to the postscript file
Dim MySheet As WorkSheet
Set MySheet = ActiveSheet '....là non
'....car plutôt For each MySheet in myWorkbook.sheets
'....oui! l'idée ici serait de boucler pour la suite
'....c'est donc ici que je butte:
' Création du fichier .ps ...Avec les feuilles (les zones
d'impression)
MySheet.Range("myRange").PrintOut copies:=1, preview:úlse,
ActivePrinter:="Acrobat Distiller", printtofile:=True, collate:=True,
prtofilename:=PSFileName
'comment enquiller les feuilles dans le .PS sans que la suivante
écrase la précédente?
'une fois le mega.ps réalisé on fait plus qu'un seul pdf....
...le reste va tout seul
' Convert the postscript file to .pdf
myPDF.FileToPDF PSFileName, PDFFileName, ParametreName
' Peut se résumer à
myPDF.FileToPDF PSFileName, "", ""

Set myPDF = Nothing
End Sub

si tu as une idée Merci et @++


Stéphane


On 7 sep, 18:00, Trirème wrote:
Bonjour LSteph,
(Sal*** d'interface pour les fils à rallonge :-( )


à ton avis est-ce qu'on pourrait ajouter plusieurs Pages (Feuilles )
au .PS
?


Ben en fait on imprime ce qu'on veut. Éventuellement plusieurs feuilles.
Perso, quand je fais :
WBFinal.PrintOut PrintToFile:=True, PrToFileName:=NomFichierPDF,
ActivePrinter:="Acrobat Distiller", Copies:=1, Collate:=True

où WBFinal est mon classeur... final, il est imprimé intégralement dans le
fichier en .PS, ou du moins les zones d'impression que j'ai créées.

Par contre si je n'ai pas bien compris le sens de ta question, et que tu
v eux fusionner plusieurs PS ou PDF entre eux, je ne crois pas qu'Excel p eut
faire ça. Il faudrait comprendre ce qu'il y a à l'intérieur d'un Po stScript.
Et là il faudrait prolonger encore un peu cette discussion.

Tu devines sans doute l'idée qui me trotte...


Ben non :-~

Cordialement,

Trirème



Avatar
Trirème

' Print the Excel range to the postscript file
Dim MySheet As WorkSheet
Set MySheet = ActiveSheet '....là non
'....car plutôt For each MySheet in myWorkbook.sheets
'....oui! l'idée ici serait de boucler pour la suite
'....c'est donc ici que je butte:


La méthode .PrintOut s'applique aussi à une collection de Sheets. tu
pourrais peut être faire quelque chose comme ça, où une boucle sélectionne
les feuilles puis la sélection est finalement imprimée (en une seule fois).
Sinon il y a SAM PDF :-D

Sub MaSelectionDeFeuilles()
Dim sh As Worksheet
Dim MesFeuilles()
Dim i As Integer, nb As Integer
nb = Worksheets.Count
ReDim MesFeuilles(nb)
i = 0
For Each sh In Worksheets
If Left(sh.Name, 1) = "L" And sh.Name <> "Log" Then ' Test bidon ;-)
MesFeuilles(i) = sh.Name
i = i + 1
End If
Next
ReDim Preserve MesFeuilles(i - 1)
Sheets(MesFeuilles()).PrintOut ActivePrinter:="Acrobat Distiller", _
printtofile:=True, prtofilename:="D:Tests" & "MesFeuilles.ps"
End Sub

Cordialement,
Trirème

Avatar
LSteph
Super!

J'ai pas Distiller ici mais j'essaie cela dans la semaine

Merci beaucoup

Stéphane


' Print the Excel range to the postscript file
Dim MySheet As WorkSheet
Set MySheet = ActiveSheet '....là non
'....car plutôt For each MySheet in myWorkbook.sheets
'....oui! l'idée ici serait de boucler pour la suite
'....c'est donc ici que je butte:


La méthode .PrintOut s'applique aussi à une collection de Sheets. tu
pourrais peut être faire quelque chose comme ça, où une boucle sélectionne
les feuilles puis la sélection est finalement imprimée (en une seule fois).
Sinon il y a SAM PDF :-D

Sub MaSelectionDeFeuilles()
Dim sh As Worksheet
Dim MesFeuilles()
Dim i As Integer, nb As Integer
nb = Worksheets.Count
ReDim MesFeuilles(nb)
i = 0
For Each sh In Worksheets
If Left(sh.Name, 1) = "L" And sh.Name <> "Log" Then ' Test bidon ;-)
MesFeuilles(i) = sh.Name
i = i + 1
End If
Next
ReDim Preserve MesFeuilles(i - 1)
Sheets(MesFeuilles()).PrintOut ActivePrinter:="Acrobat Distiller", _
printtofile:=True, prtofilename:="D:Tests" & "MesFeuilles.ps"
End Sub

Cordialement,
Trirème



Avatar
Trirème
Pour CutePDF, je suis sur une piste.


En fait, quand on les contacte ils renvoient vers :
http://www.cutepdf.com/Solutions/pdfwriter2.asp et
http://www.cutepdf.com/Solutions/pdfwriter3.asp
activable après l'achat d'un module de programmation de... $499 !!!
Ça casse !

Cordialement,
Trirème

Avatar
Francois L
Salut François
Fais bien tous les tests ! j


Bonjour,

J'ai commencé les test un peu plus complets avec PDFCreator, mais je
rencontre quelques soucis du type de ceux que jps a évoqués. Je pense
qu'ils sont liés à l'OS qui est sur ce poste (Me) car sous XP pro, je ne
les ai pas rencontrés. Je continue...

--
François L

Avatar
Francois L
Bonjour François,
Pour ma part j'ai fini mes devoirs. Je viens d'envoyer à Misange un
texte remanié à partir de ma réponse précédente.



Bonjour rameur,

Je sais, veni, vidi... et j'ai apprécié (je ne sais pas le traduire ça !)

--
François L

Avatar
Trirème
Bonjour François,
Pour ma part j'ai fini mes devoirs. Je viens d'envoyer à Misange un texte
remanié à partir de ma réponse précédente.

Cordialement
Trirème

Salut François
Fais bien tous les tests ! j


Bonjour,

J'ai commencé les test un peu plus complets avec PDFCreator, mais je
rencontre quelques soucis du type de ceux que jps a évoqués. Je pense
qu'ils sont liés à l'OS qui est sur ce poste (Me) car sous XP pro, je ne
les ai pas rencontrés. Je continue...




Avatar
lSteph
Bonjour,
Je viens d'essayer mais... :(....
Le pb au bureau (que je n'ai pas chez moi) vient de ce qu'apparemment
Printout en version 97 n'accepte visiblement pas prtofilename
on peut utiliser printtofile mais il faudra mettre ne nom à la
mimine..

D'ailleurs c'est écrit dans laide de printout:
"PrintToFile Argument de type Variant facultatif. Valeur True pour
imprimer dans un fichier. Microsoft Excel invite l'utilisateur à
entrer le nom du fichier de sortie. Il est impossible de spécifier le
nom du fichier de sortie à partir de Visual Basic."

Pour mon objectif c'est hélas Retour à la case départ.

Donc comme a contrario AtHome j'ai 2003 mais pas Distiller
je vais chercher plutôt sans passer par un post script côté PDF
Creator par exemple dont tout le monde peut faire l'acquisition sur la
toile gratuitement (donc plus universellement utilisable) et mais sur
lequel je continue à ne pas trouver comment faire pour lui adresser un
SendKeys au moment où il ouvre sa fenêtre
Ou voir sur les autres pistes aussi nombreuses que confuses de cette
grande ficelle (cela devient un filet de pêche d'ailleurs), par
exemple aussi faire un tour sur excelabo pour si ce dont parlait Papou
y figure.

Sinon je regarde ce SAM...

;o)

Merci encore

lSteph


On 7 sep, 19:18, Trirème wrote:

' Print the Excel range to the postscript file
Dim MySheet As WorkSheet
Set MySheet = ActiveSheet '....là non
'....car plutôt For each MySheet in myWorkbook.sheets
'....oui! l'idée ici serait de boucler pour la suite
'....c'est donc ici que je butte:


La méthode .PrintOut s'applique aussi à une collection de Sheets. tu
pourrais peut être faire quelque chose comme ça, où une boucle sé lectionne
les feuilles puis la sélection est finalement imprimée (en une seule fois).
Sinon il y a SAMPDF:-D

Sub MaSelectionDeFeuilles()
Dim sh As Worksheet
Dim MesFeuilles()
Dim i As Integer, nb As Integer
nb = Worksheets.Count
ReDim MesFeuilles(nb)
i = 0
For Each sh In Worksheets
If Left(sh.Name, 1) = "L" And sh.Name <> "Log" Then ' Test bidon ;-)
MesFeuilles(i) = sh.Name
i = i + 1
End If
Next
ReDim Preserve MesFeuilles(i - 1)
Sheets(MesFeuilles()).PrintOut ActivePrinter:="Acrobat Distiller", _
printtofile:=True, prtofilename:="D:Tests" & "MesFeuilles.ps"
End Sub

Cordialement,
Trirème



Avatar
lSteph
Bonjour,
Testé la macro
PrintToPDF_MultiSheetToOne_Early()

xp Pro+Excel97+Pdf Creator, seul la première page est obtenue!?
Cordialement.

lSteph


On 5 sep, 18:42, Francois L
wrote:
Bonjour,

Avec tout ça, on tient sans doute des solutions adaptés à Distiller et à
PDFCreator. Si on arrivait à faire une synthèse de ce qui marche et de
ce qui ne marche pas, et dans quelles conditions... peut-être que
Misange nous le mettrait sur le Disciplus pour la postérité.

--
François L


Avatar
lSteph
Re,

Pour le code de Trirème je viens de voir qu'il est sur excelabo et
précise les compatibilités.

Avec SAM ... tout vient en rouge dans la fenêtre du bas (aucun fichier
généré..

Sinon... .oupps ... pour cette mauvaise formulation..
. texte à reprendre
...r les autres pistes aussi nombreuses que confuses de cette
grande ficelle
... les autres pistes aussi nombreuses que de cette

.. grande ficelle est confuse...

@+

lSteph



...o
On 10 sep, 11:38, lSteph wrote:
Bonjour,
Je viens d'essayer mais... :(....
Le pb au bureau (que je n'ai pas chez moi) vient de ce qu'apparemment
Printout en version 97 n'accepte visiblement pas prtofilename
on peut utiliser printtofile mais il faudra mettre ne nom à la
mimine..

D'ailleurs c'est écrit dans laide de printout:
"PrintToFile Argument de type Variant facultatif. Valeur True pour
imprimer dans un fichier. Microsoft Excel invite l'utilisateur à
entrer le nom du fichier de sortie. Il est impossible de spécifier le
nom du fichier de sortie à partir de Visual Basic."

Pour mon objectif c'est hélas Retour à la case départ.

Donc comme a contrario AtHome j'ai 2003 mais pas Distiller
je vais chercher plutôt sans passer par un post script côté PDF
Creator par exemple dont tout le monde peut faire l'acquisition sur la
toile gratuitement (donc plus universellement utilisable) et mais sur
lequel je continue à ne pas trouver comment faire pour lui adresser un
SendKeys au moment où il ouvre sa fenêtre
Ou voir sur les autres pistes aussi nombreuses que confuses de cette
grande ficelle (cela devient un filet de pêche d'ailleurs), par
exemple aussi faire un tour sur excelabo pour si ce dont parlait Papou
y figure.

Sinon je regarde ce SAM...

;o)

Merci encore

lSteph

On 7 sep, 19:18, Trirème wrote:


' Print the Excel range to the postscript file
Dim MySheet As WorkSheet
Set MySheet = ActiveSheet '....là non
'....car plutôt For each MySheet in myWorkbook.sheets
'....oui! l'idée ici serait de boucler pour la suite
'....c'est donc ici que je butte:


La méthode .PrintOut s'applique aussi à une collection de Sheets. tu
pourrais peut être faire quelque chose comme ça, où une boucle s électionne
les feuilles puis la sélection est finalement imprimée (en une seul e fois).
Sinon il y a SAMPDF:-D

Sub MaSelectionDeFeuilles()
Dim sh As Worksheet
Dim MesFeuilles()
Dim i As Integer, nb As Integer
nb = Worksheets.Count
ReDim MesFeuilles(nb)
i = 0
For Each sh In Worksheets
If Left(sh.Name, 1) = "L" And sh.Name <> "Log" Then ' Test bidon ;-)
MesFeuilles(i) = sh.Name
i = i + 1
End If
Next
ReDim Preserve MesFeuilles(i - 1)
Sheets(MesFeuilles()).PrintOut ActivePrinter:="Acrobat Distiller", _
printtofile:=True, prtofilename:="D:Tests" & "MesFeuilles.ps"
End Sub

Cordialement,
Trirème





3 4 5 6 7