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...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
.
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
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
.
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
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" <dah@anti.spam.fr> a écrit dans le message de
news:bp2qg1$vjf$1@biggoron.nerim.net...
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...)
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
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
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" <michel.pierron@free.fr> a écrit dans le message de news:OJXLrm1qDHA.3504@TK2MSFTNGP11.phx.gbl...
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" <dah@anti.spam.fr> a écrit dans le message de
news:bp2qg1$vjf$1@biggoron.nerim.net...
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...)
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...)