Générer 1 PDF dans un dossier défini

  • Initiateur de la discussion Initiateur de la discussion Natiffar
  • 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 !

N

Natiffar

Guest
Bonjour à tous!

Je fais suite à ma précédente demande 'Génération auto. d'un nom de fichier' sur laquelle j'exposais un nouveau problème. J'ai réalisé qu'il valait mieux exposer mon nouveau problème sur un nouveau message.
J'en profite pour encore remercier Baside et Gael qui m'ont bien aidé sur ce coup-là.

Donc...

Je souhaite généré un fichier PDF de manière transparente pour l'utilisateur. Plus en détail...

J'ai créé un modèle de commande sur lequel est placé un bouton (sous forme de shape) déclenchant une suite d'action:

- enregistrement du fichier sous un nom concatenant le n° de commande et le nom du fournisseur le tout placé dans un dossier défini.

- impression de la commande sur une imprimante par défaut

- génération d'un pdf.

C'est sur ce dernier point que cela pêche. J'arrive bien à générer le pdf avec la fonction PrintOut, mais je n'arrive pas à lui spécifier un dossier précis. Il me le place toujours dans le dossier par défaut du logiciel, ce qui ne m'arrange pas du tout!

Merci d'avance à tout ceux qui auront une bonne idée. Et au autre, ne vous inquiétez pas, vous aurez d'autres occasions de m'aider ! 😉

Bonne journée
 
Hello,

En épluchant un peu le forum, j'ai lu un truc sur le PDFWriter dans la version 6 d'Acrobat. Du genre un truc qui fait peur un gens comme moi qui n'y connaissons pas grand chose en VBA :S
Si j'ai bien compris, la méthode PrintOut ne peut plus être utilisé pour créer un PDF automatiquement dans la v.6 ?

Est-ce bien cela ?

Merci
 
Hello,


Je me permets de remonter ma demande car je n'ai toujours pas trouvé de solution. Pourtant je cherche et cela m'agace car je suis certian que c'est assez simple!

Merci d'avance à celui ou celle qui me permettra de conserver mes derniers cheveux sur la tête 🙂

@+

Natiffar :evil:
 
Bonjour Natiffar,

Je ne t'avais pas laissé tomber comme tu as pu le croire, simplement, j'ai du réinstaller l'imprimante Adobe PDF qui n'étais pas correctement installée et je n'avais pas sous la main le CD d'origine.

Tout est OK maintenant et j'ai fait quelques essais:

Il y a en fait 3 solutions différentes pour créer un PDF:

Si tu te sers de PDFMaker, le fichier sera automatiquement créé dans le même répertoire que le fichier source.

Avec Distiller, il faut créer un fichier postscript en cochant l'option 'imprimer dans un fichier' d'une imprimante Postscript mais le système te demandera le nom du fichier.

En imprimant sur l'imprimante Adobe PDF (ou un autre nom selon les versions d'Acrobat). C'est la solution la plus simple. Pour changer le nom du dossier par défaut:

Paramètres / imprimantes / Adobe PDF clic droit 'Propriétés' puis choisis l'onglet port. Clique sur 'Ajouter un port' et choisis 'Adobe PDF port' il te proposera de choisir un dossier par défaut qui sera celui utilisé par la suite pour tous les PDF lancés de cette façon.

Je n'ai pas fait l'essai mais je pense que tu peux renommer l'imprimante Adobe puis la réinstaller de façon à disposer de plusieurs imprimantes PDF pointant vers des dossiers différents.

Au niveau des macros, tu peux sélectionner l'imprimante que tu souhaites pour imprimer ce qui te permet d'imprimer plusieurs fois, une fois sur papier, une fois en PDF dans n'importe quel ordre. Cela donne chez moi en auto-enregistrement:

Sub Macro1()

Application.ActivePrinter = 'Adobe PDF sur Ne02:'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
'Adobe PDF sur Ne02:', Collate:=True
Application.ActivePrinter = 'IBM Infoprint 1332 PS3 sur Ne00:'
End Sub

Les noms d'imprimantes seront bien sûr différents chez toi.

Le deusième 'ActivePrinter' ne sert qu'à remettre l'imprimante réseau par défaut mais j'aurais pu aussi lancer une impression.

La création d'un PDF avec PDFMAKER est cependant plus riche et donne un meilleur résultat que l'imprimante Adobe PDF.

Bon courage.

@+

Gael
 
Merci, c'est sympa de penser à moi.

Tout d'abord je réponds aux solutions de Gaël:

1/ Mon problème, c'est que les ordinateurs des utilisateurs ne doivent au mieux posséder que PDFWriter. Cela limite un peu.

2/ J'ai besoin que toute la procédure soit transparente pour les utilisateurs, car ils sont de qualification très différente. Donc, il faut pas que se soit plus compliqué que ce ne l'est actuellement à la main.

3/ Certains utilisateurs travaillent sur des réseaux séparés du mien. Donc, je dois avoir une configuration la plus simple possible pour éviter les interconnexions entre réseaux que les sociétés de maintenance informatique finiront un jour par couper sans prévenir personne et on y comprendra plus rien! En fait, je voyais juste la création de dossier partagé pour stocker les fichiers.

4/ Les utilsateurs travaillant tous avec des imprimantes différentes, j'ai besoin que mon application s'adapte au choix de l'imprimante par défaut.

Bref, et j'en oublie sûrement. Voilà un aperçu du code que j'ai tenté de mettre en place, mais j'ai désormais un message d'erreur du genre : 'Impossible d'imprimer. Le fichier est en cours d'utilisation ou verrouillé'. Pourtant avant cela marchait pas mal! Je n'y comprends plus rien 😛inch: J'ai même éteint et redémarré mon PC, mais ren y fait.

Tout bien réfléchi, je vous attache mon fichier complet, vous y verrez peut plus clair que moi tous les deux, car moi, je ne vois plus rien à force.

Si vous trouvez une solution, je suis preneur avec plaisir.

D'avance merci à tous les 2 pour votre temps.

@+

Natiffar :evil:
 
Bonjour,

Je me suis replongé sur mon code ce matin et je réalise que la fonction DefaultFilePath ne fonctionne pas pour l'impression et donc pour PDFWriter!!!
Mon code ci-dessous fonctionne donc à( l'exception d'un petit souci sur la fonction PrintOut), mais ne donne pas le résultat escompté.

Code:
    Dim Variable_Path As String

    Variable_Path = Application.DefaultFilePath 'mise en memoire du chemin par defaut
    Application.DefaultFilePath = 'X:\\Commandes\\UTA\\2005\\INDIVISION\\Archives\\' 'parametrer le nouveau chemin à utiliser
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:='Acrobat PDFWriter sur LPT1:', Collate:=True 'Générer le pdf
    Application.DefaultFilePath = Variable_Path 'reinitialiser le chemin par défaut

Connaissez-vous une autre fonction qui pourrait s'adapter car je crois que la solution que j'ai trouvé fonctionnerait pas mal. Et je comprends mieux pourquoi Gaël voulait que je créeplusieurs imprimante PDFWriter préconfigurées !!! 😉

Message édité par: Natiffar, à: 08/06/2005 10:25
 
Bonjour Nattifar,

Effectivement, si tu utilises des imprimantes PDFWriter, je crois qu'on ne peux pas paramétrer les ports mais peut-être peut-on définir un dossier par défaut.

L'option Distiller est peut-être utilisable car j'ai vu que la commande Printout de VBA permet de définir un fichier de sortie (option PrtoFilename) que tu peux associer à une variable.

Si les imprimantes utilisées sont postscript, tu peux lancer l'impression automatiquement sur l'imprimante par défaut avec l'option PrtoFile=True et un nom de fichier défini)

Le fichier d'impression sera un fichier Postscript (.PS) qui sera stocké dans le dossier par défaut de chaque PC défini dans excel.

Un simple programme batch peut récupérer tous les fichiers .ps et les rapatrier dans le répertoire de ton choix qui sera bien sûr controlé par distiller qui créera automatiquement tous les PDF.

Est-ce envisageable?

@+

Gael
 
Rebonjour nattifar,

En refaisant un test, j'ai vu que l'option PrtoFileName permet de définir un chemin avec le nom du fichier:

ActiveWindow.SelectedSheets.PrintOut Copies:=1, PrintToFile:=True, Collate _
:=True, PrToFileName:=('C:\\serge\\testGD.PS')

ça marche très bien et je pense que tu peux t'en servir soit avec Pdfwriter ce qui va générer un PDF, soit avec distiller pour envoyer tous les .PS dans le dossier de ton choix.

@+

Gael
 
Merci Gaël pour tout le temps que tu consacres à mon problème.

En ce qui concerne la création de fichier PS. Toute les imprimantes ne sont malheureusement pas PostScript chez nous. Donc obligé d'utiliser PDFWriter...

Par contre, ta seconde solution est intéressante, j'avais d'ailleurs tenté quelque chose dans ce genre tout au début de mes recherches, malheureusement, le résultat chez moi est toujours le même: création d'un pdf de 0k que je ne peux pas ouvrir.
Par contre, il me génère quand même un fichier pdf valide dans le dossier source du fichier.

Une idée ? Sinon, sais-tu comment rédiger un script qui me rapatrie les fichiers .pdf au fur et à mesure dans un dossier spécifique ?

Merci d'avance

Natiffar

:evil:

Message édité par: Natiffar, à: 08/06/2005 18:23
 
Bonsoir à tous

Rapidos, j'ai survolé ce Fil... PDFWriter est dispos sous Adobe Acrobat 5.0

Une 'combines' qui a générée des milliers de PDF dans mon job :


Public Const ThePath As String = 'I://MC_PROD//Cash//Transac//' '*



Sub TestPrintPDF
Dim Nom As String

Nom = 'Toto'
Application.SendKeys Keys:=ThePath & Nom + '~'
Sheets('Transaction').PrintOut ActivePrinter:='Acrobat PDFWriter on LPT1:'

End Sub

Le Send Key est un peu 'Cochon' comme dirait Laurent Longre, mais ça dépanne...

Sinon on a pas mal bossé là dessus avec Ti dans l'ancien Forum...

Bonne Soirée
@+Thierry

PS * Remplacer les '//' par des Anti-Slash of course
 
Bonjour Gaël,

Tu avais raison ! Avec Distiller ca marche bien contrairement à PDFWriter.

Je vais voir ce que je peux faire sur les postes utilisateurs de mes collaborateurs pour leur installer le Distiller. Cela me sera peut-être plus facile que de chercher indéfiniment une solution avec PDFWriter.

Par contre, sais-tu si l'on peut automatiser le traitement des PS.
La solution que j'ai trouvé c'est un .bat mais je ne sais pas si on peut le faire démarrer avec une macro vba dans Excel et si on peut refermer Distiller après traitement en utilisant toujours un .bat.

Une idée ?

@+

Natiffar :evil:
 
Merci Thierry pour ton message.

Je testerais ta solution demain. A première lecture, je n'y comprend rien (mes connaissances en VBA sont très limitées). Mais en m'y plongeant je devrais y arriver.

Bonne soirée et merci

Natiffar :evil:
 
Bonsoir Nattifar,

Comme je ne suis pas là pour enrichir les constructeurs d'imprimantes, il est bien sûr hors de question d'acheter une imprimante Postscript pour chaque utilisateur ni même pour un seul.

En fait, il faut simplement disposer d'une imprimante postscript qui peut être virtuelle. Tu installes simplement une HP Laserjet 4000PS paramétrée en local sur le port 'FILE:' et le tour est joué, tu peux t'en servir pour créer des fichiers PS.

J'ai fait l'essai avec le driver fourni par Windows et ça marche super.

Pour automatiser tout, il suffit de configurer Distiller en lui affectant un dossier de contrôle par exemple C:\\Nattifar; Distiller va y créer 2 dossiers 'In' et 'Out' . A partir de là, si distiller est lancé, il va surveiller le dossier in et dès qu'un fichier .PS arrive, il le transforme en PDF qu'il met dans le dossier 'Out'.

En résumé:
* Tu installes une laserjet 4000 PS sur FILE:
* Tu configures Distiller avec le dossier de contrôle C:\\Nattifar (il peut aussi y avoir plusieurs dossiers de contrôle)
* Tu crée la macro qui choisis cette imprimante et crée le fichier .PS dans le répertoire C:\\Nattifar\\In
* Tu n'as plus qu'à exploiter les PDF dans C:\\Nattifar\\Out

Au cas où Distiller se plante ou n'est pas lançé, aucune importance, les fichiers .PS s'entassent dans In (ils doivent avoir des noms différents) et au prochain lancement de Distiller, les fichiers sont convertis les uns après les autres.

Il est possible d'utiliser un répertoire réseau et même de laisser Distiller en permanence sur un serveur. Je ne suis pas très sûr de la légalité au niveau licence Acrobat mais ça marche.

@+

Gael
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour