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

VBA. Imprimer un classeur Excel sans l'ouvrir

3 réponses
Avatar
DAH
Bonjour,

En VBA, je voudrais pouvoir imprimer un Classeur Excel sans avoir à
l'ouvrir... J'ai donc cherché à utiliser la commande qui est prise par un
'Clic-droit / Imprimer'... Mais même cette manip (j'ai récupéré le code sur
la base de registre) ouvre, imprime et referme le classeur.

Pourquoi est-ce que je ne veux pas ouvrir le classeur? Parce que mon
problème est que la macro doit gérer l'impression de plusieurs centaines de
Classeurs comprenant plusieurs feuilles et que l'ouverture et la fermeture
de X classeurs devient alors très très long... (10 à 20 minutes). Le fait
d'imprimer sans ouvrir Excel me ferait donc gagner du temps... Mais est-ce
possible?

(petite précision... j'ai aussi des documents Word dans cette liste
d'impressions...)

Merci d'avance pour votre aide.
--
@+
David

3 réponses

Avatar
Isabelle L.
Je n'ai pas la totalité de la réponse, peut-être une
partie ...

j'ai du convertir des milliers de fichiers en pdf pour
cela j'ai du passer par la boite "ouvrir" de word ou
d'excel et utiliser ensuite le clic droit /imprimer alors
j'ai pu imprimer sans que les fichiers s'ouvrent
contrairement à l'explorateur... bizarre....hein..

à toi de trouver la commande en VBA

Isabelle L.
-----Message d'origine-----
Bonjour,

En VBA, je voudrais pouvoir imprimer un Classeur Excel
sans avoir à

l'ouvrir... J'ai donc cherché à utiliser la commande qui
est prise par un

'Clic-droit / Imprimer'... Mais même cette manip (j'ai
récupéré le code sur

la base de registre) ouvre, imprime et referme le
classeur.


Pourquoi est-ce que je ne veux pas ouvrir le classeur?
Parce que mon

problème est que la macro doit gérer l'impression de
plusieurs centaines de

Classeurs comprenant plusieurs feuilles et que
l'ouverture et la fermeture

de X classeurs devient alors très très long... (10 à 20
minutes). Le fait

d'imprimer sans ouvrir Excel me ferait donc gagner du
temps... Mais est-ce

possible?

(petite précision... j'ai aussi des documents Word dans
cette liste

d'impressions...)

Merci d'avance pour votre aide.
--
@+
David


.



Avatar
Michel Pierron
Bonjour DAH;
Sans garantie:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long

Sub PrintFile()
Const MyFile As String = "Chemin complet du fichier à imprimer"
ShellExecute FindWindow("XLMAIN", Application.Caption), "print", MyFile,
"", "", 1
End Sub

MP

"DAH" a écrit dans le message de
news:bp2qg1$vjf$
Bonjour,

En VBA, je voudrais pouvoir imprimer un Classeur Excel sans avoir à
l'ouvrir... J'ai donc cherché à utiliser la commande qui est prise par un
'Clic-droit / Imprimer'... Mais même cette manip (j'ai récupéré le code
sur

la base de registre) ouvre, imprime et referme le classeur.

Pourquoi est-ce que je ne veux pas ouvrir le classeur? Parce que mon
problème est que la macro doit gérer l'impression de plusieurs centaines
de

Classeurs comprenant plusieurs feuilles et que l'ouverture et la fermeture
de X classeurs devient alors très très long... (10 à 20 minutes). Le fait
d'imprimer sans ouvrir Excel me ferait donc gagner du temps... Mais est-ce
possible?

(petite précision... j'ai aussi des documents Word dans cette liste
d'impressions...)

Merci d'avance pour votre aide.
--
@+
David




Avatar
Denis Michon
Bonjour Michel,


Le seul "Hic" c'est que cette procédure ouvre le dit fichier dans une nouvelle instance "Excel" à l'écran, et demande en
plus à l'ouverture la sempiternelle question sur l'activation des macros avant de lancer l'impression ! Incroyable non ?


Ceci étant, il je préférerais ceci :

Ceci crée une nouvelle instance "Excel"
On peut choisisr de rendre visible ou non l'application
On évite la question sur l'activation des macros.
Elle est plus rapide dans son exécution.

Je ne l'ai pas testé sur une suite de fichiers... mais attention, le buffer (mémoire) de l'imprimante doit avoir des
limites ! non ? La vitesse , oui, mais faut bien qu'il y ait de la place de "Storage" pour la queue de l'impression. À
moins que chaque classeur contienne une procédure définissant les paramètres d'impression qui lui sont propres... tous
les fichiers vont être imprimé avec la même mise en page !

'----------------------
Sub ImprimerDansUneNouvelleInstance_Excel()

Dim Xl As Object
Dim Wk As Workbook

Set Xl = CreateObject("Excel.application")
Xl.visible = False

'Insérer ceci dans un boucle sur le répertoire...
'Un exemple est disponible dans l'aide d'excel en faisant
'une recherche sur la fonction "Dir()"

'-----------
Set Wk = Xl.Workbooks.Open("C:excelclasseur1.xls")
Wk.PrintOut
DoEvents
Wk.Close
'-----------

Xl.Quit
Set Wk=Nothing : Set Xl = Nothing
End Sub
'----------------------


Salutations!








"Michel Pierron" a écrit dans le message de news:
Bonjour DAH;
Sans garantie:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String _
, ByVal nShowCmd As Long) As Long

Sub PrintFile()
Const MyFile As String = "Chemin complet du fichier à imprimer"
ShellExecute FindWindow("XLMAIN", Application.Caption), "print", MyFile,
"", "", 1
End Sub

MP

"DAH" a écrit dans le message de
news:bp2qg1$vjf$
Bonjour,

En VBA, je voudrais pouvoir imprimer un Classeur Excel sans avoir à
l'ouvrir... J'ai donc cherché à utiliser la commande qui est prise par un
'Clic-droit / Imprimer'... Mais même cette manip (j'ai récupéré le code
sur

la base de registre) ouvre, imprime et referme le classeur.

Pourquoi est-ce que je ne veux pas ouvrir le classeur? Parce que mon
problème est que la macro doit gérer l'impression de plusieurs centaines
de

Classeurs comprenant plusieurs feuilles et que l'ouverture et la fermeture
de X classeurs devient alors très très long... (10 à 20 minutes). Le fait
d'imprimer sans ouvrir Excel me ferait donc gagner du temps... Mais est-ce
possible?

(petite précision... j'ai aussi des documents Word dans cette liste
d'impressions...)

Merci d'avance pour votre aide.
--
@+
David