Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 23h16   #1
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Par défaut Comment utiliser la méthode Document.PrintOut

Bonjour.

Je fais de l'automation de Word. J'ai une variable application (wdApp) et une variable document (wdDoc).
Quand je veux imprimer le documentne donne rien, pas même une erreur.
Si j'utilise l'enregistreur de macro, j'obtiens
Code :
Application.PrintOut ...
Si je mets dans mon code Cela fonctionne, mais cela me gêne car je ne précise nulle part quel document je veux imprimer. En l'occurence ce n'est pas grave parce que je n'en ai qu'un, mais bon : j'aimerais comprendre.
La méthode PrintOut existe pourtant bien pour l'objet Document!
Et cela doit être un truc basic pour les spécialistes Word.

D'avance, merci de m'expliquer.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 18h32   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Utilises-tu le EarlyBinding ou le LateBinding pour faire ton automation ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 20h21   #3
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Je pense que c'est de l'early binding. Mais comme je ne suis pas sûr je précise que je fais
Code :
1
2
3
4
5
Dim oWdApp as Word.Application
Dim oWdDoc as Word.Document
 
Set oWdApp = New Word.Application
Set oWdDoc = oWdApp.Documents.Open(sPath)
Ensuite je modifie le doc, et après je veux l'imprimer.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 22h14   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

C'est bien le EarlyBinding.

cette méthode est applicable à l'objet document et pas à l'objet application.


Le simple fait de faire ActiveDocument.PrintOut imprime directement le document sur l'imprimante Active sans rien demander à l'utilisateur.

Il est possible de définir certains paramètres pour mieux cibler l'impression, mais ça n'affecte pas l'impression.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 22h53   #5
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Je ne suis pas sûr de comprendre ta réponse. Dans mon cas ne provoque pas d'erreur mais n'imprime pas.
Alors que déclenche l'impression.

Cela ne me semble pas satisfaisant du tout.

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 23h06   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Ce n'est pas l'effet que j'obtiens.
Chez moi ActiveDocument.PrintOut envoie le document directement vers l'imprimante.

Je n'ai pas essayé sur l'objet Application.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 08h04   #7
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Chez moi aussi ton code provoque bien l'impression avec l'objet Document.

Il n'y a pas de méthode BeforePrint appliquée à ton document quand même?
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 09h47   #8
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

Mon document est un .docx, sans code.
Je vais refaire des essais. J'espérais que ce pb soit connu (on est sur une méthode majeure pour Word), mais si ce n'est pas le cas c'est que c'est chez moi que cela cloche.

A+

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h51   #9
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

J'ai réécris le code en le simplifiant, juste pour démontrer le pb, et je suis passé d'Access à Excel.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub subEditeRecu(ByVal sPrenom As String, ByVal sNom As String)
'Utilise la bibli : Microsoft Word 12.0 Object library
Dim wdApp As Word.Application, wdDoc As Word.Document
Dim sPath As String
 
sPath = ThisWorkbook.Path
sPath = sPath & "\Modeles\RecuCotisation.docx"
 
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(sPath)
 
wdDoc.Bookmarks("sgnPrenom").Range.Text = sPrenom
wdDoc.Bookmarks("sgnNom").Range.Text = sNom
 
wdDoc.PrintOut False 'ou : wdApp.PrintOut False
DoEvents
 
wdDoc.Close wdDoNotSaveChanges
wdApp.Quit wdDoNotSaveChanges
 
Set wdDoc = Nothing
Set wdApp = Nothing
 
End Sub
 
Sub subTestEdite()
Call subEditeRecu("Paul", "Auchon")
End Sub
Le test consiste à essayer alternativement les 2 références pour PrintOut : l'application et le document. Je me suis aperçu que l'une ou l'autre fonctionnait aléatoirement. Après investigation : pb de réseau local donnant accès à l'imprimante. Au temps pour moi : faux problème.

Désolé pour cette mauvaise question et merci à Heureux-oli et carden752.
Une question quand même pour Heureux-oli : cela change qqc qu'on travaille en early ou late binding?

Bonne journée à tous,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 12h08   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

travailler avec EARLY ou LATE n'est pas en soi un problème et les différences avec les machines actuelles sont très faibles voire insignifiantes pour ce qui est de l'exécution.


Par contre, travailler en EARLY BINDING donne accès à l'INTELLI SENSE ou en français l'autocomplétion du code.
Tu tapes un morceau de code et la suite t'est automatiquement proposée, ce qui permet d'éviter des erreurs de syntaxe ou d'utilisation de méthodes ou propriétés inadaptées.

Dans ton cas en reprenant le code que tu nous a donné :

Code :
1
2
3
Dim wdApp As Word.Application, wdDoc As Word.Document
 
wdDoc.Prin
VBA te proposera PRINTOUT dans un déroulant, on valide par une pression sur Enter, Espace, Tabulation, dans certains cas, une ( ou un . ou une , ou ....

Et chose non négligeable, les arguments utilisables sont affichés aussi.

Ce que je fais régulièrement, si ce code est pour moi, pas besoin, mais si je dois le distribuer, je ne connais pas les versions utilisées par les différents destinataires. J'écris en EARLY BINDING et quand mon code est terminé, je le passe en LATE BINDING.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 23h23   #11
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Merci. Mais la question était est-ce que le binding a une influence sur la méthode PrintOut. Mais je pense que la réponse est non.

Bien cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 00h01   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 321
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 321
Points : 29 220
Points : 29 220
Salut,

Non, l'utilisation des méthodes et propriétés n'est pas impactée par le mode utilisé.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h24.


 
 
 
 
Partenaires

Hébergement Web