OVH Cloud OVH Cloud

Automation PDFCreator

3 réponses
Avatar
Stach
Salut à tous

Je me suis créé une macro (affectée à un bouton d'une de mes barres d'outil)
me permettant, par automation VBA, d'imprimer virtuellement au format .pdf
mon document en cours grâce à PDFCreator, puis d'ouvrir un nouveau message
Outlook et d'insérer le fichier .pdf en pièce jointe.

Le seul problème, c'est qu'il faut que je m'y prenne à 2 fois pour obtenir
le bon résultat, car la première fois que j'exécute ma macro, le fichier .pdf
ne se crée pas (ou en tous cas, mon système ne s'actualise pas). J'obtiens
donc un message me disant que le fichier que je veux joindre à mon mail
n'existe pas. Ce n'est que quand j'appuye une 2ème fois sur mon bouton
contenat la macro, que apparement le système s'est actualisé et que là tous
se passe sans problème.

Qq connaitrai-t-il une astuce pour, en vba, réactualiser mon dossier dans
lequel mon pdf est censé se trouver, et ainsi pouvoir réaliser le tout d'un
seul click.

Merci d'avance.
--
Stach ;-)

3 réponses

Avatar
Anacoluthe
Bonjour !

'Stach' nous a écrit ...
Je me suis créé une macro (affectée à un bouton d'une de mes barres d'outil)
me permettant, par automation VBA, d'imprimer virtuellement au format .pdf
mon document en cours grâce à PDFCreator, puis d'ouvrir un nouveau message
Outlook et d'insérer le fichier .pdf en pièce jointe.
Le seul problème, c'est qu'il faut que je m'y prenne à 2 fois pour obtenir
le bon résultat, car la première fois que j'exécute ma macro, le fichier .pdf
ne se crée pas (ou en tous cas, mon système ne s'actualise pas). J'obtiens
donc un message me disant que le fichier que je veux joindre à mon mail
n'existe pas. Ce n'est que quand j'appuye une 2ème fois sur mon bouton
contenat la macro, que apparement le système s'est actualisé et que là tous
se passe sans problème.
Qq connaitrai-t-il une astuce pour, en vba, réactualiser mon dossier dans
lequel mon pdf est censé se trouver, et ainsi pouvoir réaliser le tout d'un
seul click.


Je ne connais pas PDFCreator mais je suppose qu'il s'agit d'un driver
d'impression en PDF. Votre problème est probablement lié alors à
l'impression en arrière-plan : votre macro continue son cours alors
que le système n'a pas fini d'immprimer. C'est un problème classique
lors d'impressions vraies. Copié-collé d'une précédente réponse :

Il y a plusieurs méthodes pour attendre une fin d'impression:
- supprimer l'impression en tâche de fond
ActiveDocument.Printout Background:úlse
ou
Options.PrintBackground = False
- si on veut garder le spooling pour pouvoir faire autre chose
on peut aussi avec Options.PrintBackground = True
faire intervenir un autre processus d'attente
comme par exemple une UserForm "Impression en cours..."
qui ne fait rien qu'attendre que la file d'attente soit vide
Set WordApp = GetObject(, "Word.Application")
Do While WordApp.BackgroundPrintingStatus > 0
DoEvents
Loop
- on peut passer par des API d'attente de processus
- on peut placer une temporisation plus ou moins fixe
etc etc

Anacoluthe
« Attendre est encore une occupation.
C'est ne rien attendre qui est terrible. »
- Cesare PAVESE

Avatar
Stach
Bonsoir Anacoluthe,

j'ai bien essayé comme tu me mle conseil:

ActiveDocument.Printout Background:úlse ou Options.PrintBackground = False

Mais ça na marche pas (Propriété ou méthode non gérée par cet objet)

Tu as une idée d'où ça vient?
Merci

--
Stach ;-)



Bonjour !

'Stach' nous a écrit ...
Je me suis créé une macro (affectée à un bouton d'une de mes barres d'outil)
me permettant, par automation VBA, d'imprimer virtuellement au format .pdf
mon document en cours grâce à PDFCreator, puis d'ouvrir un nouveau message
Outlook et d'insérer le fichier .pdf en pièce jointe.
Le seul problème, c'est qu'il faut que je m'y prenne à 2 fois pour obtenir
le bon résultat, car la première fois que j'exécute ma macro, le fichier .pdf
ne se crée pas (ou en tous cas, mon système ne s'actualise pas). J'obtiens
donc un message me disant que le fichier que je veux joindre à mon mail
n'existe pas. Ce n'est que quand j'appuye une 2ème fois sur mon bouton
contenat la macro, que apparement le système s'est actualisé et que là tous
se passe sans problème.
Qq connaitrai-t-il une astuce pour, en vba, réactualiser mon dossier dans
lequel mon pdf est censé se trouver, et ainsi pouvoir réaliser le tout d'un
seul click.


Je ne connais pas PDFCreator mais je suppose qu'il s'agit d'un driver
d'impression en PDF. Votre problème est probablement lié alors à
l'impression en arrière-plan : votre macro continue son cours alors
que le système n'a pas fini d'immprimer. C'est un problème classique
lors d'impressions vraies. Copié-collé d'une précédente réponse :

Il y a plusieurs méthodes pour attendre une fin d'impression:
- supprimer l'impression en tâche de fond
ActiveDocument.Printout Background:úlse
ou
Options.PrintBackground = False
- si on veut garder le spooling pour pouvoir faire autre chose
on peut aussi avec Options.PrintBackground = True
faire intervenir un autre processus d'attente
comme par exemple une UserForm "Impression en cours..."
qui ne fait rien qu'attendre que la file d'attente soit vide
Set WordApp = GetObject(, "Word.Application")
Do While WordApp.BackgroundPrintingStatus > 0
DoEvents
Loop
- on peut passer par des API d'attente de processus
- on peut placer une temporisation plus ou moins fixe
etc etc

Anacoluthe
« Attendre est encore une occupation.
C'est ne rien attendre qui est terrible. »
- Cesare PAVESE




Avatar
Geo

Bonsoir Anacoluthe,

j'ai bien essayé comme tu me mle conseil:

ActiveDocument.Printout Background:úlse ou Options.PrintBackground = False

Mais ça na marche pas (Propriété ou méthode non gérée par cet objet)


C'est quelle version de word ?
Chez moi (version 2000):
ActiveDocument.PrintOut Background:úlse
Options.PrintBackground = False
ActiveDocument.PrintOut

marchent bien

--
A+