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

Imprimer tous les fichier d'un dossier

7 réponses
Avatar
-Tibo-
Bonjour,

Je voudrais faire une macro simple qui imprimerais tous les fichiers
(.xlsm et .docx) du dossier dans lequel se trouve le fichier Excel
contenant la macro.

Je voudrais juste que le prompt d'impression apparaisse pour chaque
feuille afin de choisir les options d'impression. Une fois le bouton
imprimer pressé, la macro passe au fichier suivant et affiche le prompt
d'impression du fichier suivant.

Merci de votre aide.

Cordialement

Tibo

7 réponses

Avatar
Daniel.C
Bonjour.
Essaie la macro suivante :

Sub Impression()
Dim Fich As String, WordObj As Object, WordDoc As Object

Fich = Dir(ThisWorkbook.Path & "*.xlsm")
Do While Fich <> ""
Workbooks.Open ThisWorkbook.Path & "" & Fich
For Each sh In ActiveWorkbook.Sheets
sh.PrintPreview
Next sh
ActiveWorkbook.Close False
Fich = Dir
Loop
Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
'Set WordObj = GetObject(, "Word.Application")
Fich = Dir(ThisWorkbook.Path & "*.docx")
Do While Fich <> ""
Set WordDoc = WordObj.documents.Open(ThisWorkbook.Path & "" &
Fich)
WordDoc.PrintPreview
WordDoc.Close
Fich = Dir
Loop
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub

Cordialement.
Daniel

Bonjour,

Je voudrais faire une macro simple qui imprimerais tous les fichiers (.xlsm
et .docx) du dossier dans lequel se trouve le fichier Excel contenant la
macro.

Je voudrais juste que le prompt d'impression apparaisse pour chaque feuille
afin de choisir les options d'impression. Une fois le bouton imprimer pressé,
la macro passe au fichier suivant et affiche le prompt d'impression du
fichier suivant.

Merci de votre aide.

Cordialement

Tibo


Avatar
-Tibo-
Merci pour ta proposition Daniel !

Cependant la partie concernant Word ne fonctionne pas : lors de l'action
.PrintPreview, Word affiche bien la preview mais referme aussitôt le
fichier pour passer au suivant. Je peux donc pas appuyer sur "Imprimer"
comme dans la partie Excel qui elle marche très bien.

une Idee ?

Merci encore...


Daniel.C a écrit :
Bonjour.
Essaie la macro suivante :

Sub Impression()
Dim Fich As String, WordObj As Object, WordDoc As Object

Fich = Dir(ThisWorkbook.Path & "*.xlsm")
Do While Fich <> ""
Workbooks.Open ThisWorkbook.Path & "" & Fich
For Each sh In ActiveWorkbook.Sheets
sh.PrintPreview
Next sh
ActiveWorkbook.Close False
Fich = Dir
Loop
Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
'Set WordObj = GetObject(, "Word.Application")
Fich = Dir(ThisWorkbook.Path & "*.docx")
Do While Fich <> ""
Set WordDoc = WordObj.documents.Open(ThisWorkbook.Path & "" & Fich)
WordDoc.PrintPreview
WordDoc.Close
Fich = Dir
Loop
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub

Cordialement.
Daniel

Bonjour,

Je voudrais faire une macro simple qui imprimerais tous les fichiers
(.xlsm et .docx) du dossier dans lequel se trouve le fichier Excel
contenant la macro.

Je voudrais juste que le prompt d'impression apparaisse pour chaque
feuille afin de choisir les options d'impression. Une fois le bouton
imprimer pressé, la macro passe au fichier suivant et affiche le
prompt d'impression du fichier suivant.

Merci de votre aide.

Cordialement

Tibo






Avatar
Daniel.C
J'avais testé en mode ligne à ligne ! . En attendant une proposition
correcte, si tu es pressé, tu peux mettre un poin d'arrêt sur
l'insttruction "Loop", mais bon, c'est du bricolage. Poste ton problème
sur le forum Word, tu auras plus de chances d'obtenir une réponse.
Daniel

Merci pour ta proposition Daniel !

Cependant la partie concernant Word ne fonctionne pas : lors de l'action
.PrintPreview, Word affiche bien la preview mais referme aussitôt le fichier
pour passer au suivant. Je peux donc pas appuyer sur "Imprimer" comme dans la
partie Excel qui elle marche très bien.

une Idee ?

Merci encore...


Daniel.C a écrit :
Bonjour.
Essaie la macro suivante :

Sub Impression()
Dim Fich As String, WordObj As Object, WordDoc As Object

Fich = Dir(ThisWorkbook.Path & "*.xlsm")
Do While Fich <> ""
Workbooks.Open ThisWorkbook.Path & "" & Fich
For Each sh In ActiveWorkbook.Sheets
sh.PrintPreview
Next sh
ActiveWorkbook.Close False
Fich = Dir
Loop
Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
'Set WordObj = GetObject(, "Word.Application")
Fich = Dir(ThisWorkbook.Path & "*.docx")
Do While Fich <> ""
Set WordDoc = WordObj.documents.Open(ThisWorkbook.Path & "" & Fich)
WordDoc.PrintPreview
WordDoc.Close
Fich = Dir
Loop
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub

Cordialement.
Daniel

Bonjour,

Je voudrais faire une macro simple qui imprimerais tous les fichiers
(.xlsm et .docx) du dossier dans lequel se trouve le fichier Excel
contenant la macro.

Je voudrais juste que le prompt d'impression apparaisse pour chaque
feuille afin de choisir les options d'impression. Une fois le bouton
imprimer pressé, la macro passe au fichier suivant et affiche le prompt
d'impression du fichier suivant.

Merci de votre aide.

Cordialement

Tibo








Avatar
-Tibo-
Je vais aller voir sur le forum Word... Mais voulant mettre la macro
dans un fichier Excel, j'avais d'abord penser à ce forum.
Je ne suis pas particulièrement presser donc pas de soucis...
Pour le point d'arret, je ne sais pas comment m'y prendre pour le moment
mais je vais aller faire un tour dans l'aide de VBA...

Merci encore de ton aide.

Cdlt.

Tibo


Daniel.C a écrit :
J'avais testé en mode ligne à ligne ! . En attendant une proposition
correcte, si tu es pressé, tu peux mettre un poin d'arrêt sur
l'insttruction "Loop", mais bon, c'est du bricolage. Poste ton problème
sur le forum Word, tu auras plus de chances d'obtenir une réponse.
Daniel

Merci pour ta proposition Daniel !

Cependant la partie concernant Word ne fonctionne pas : lors de
l'action .PrintPreview, Word affiche bien la preview mais referme
aussitôt le fichier pour passer au suivant. Je peux donc pas appuyer
sur "Imprimer" comme dans la partie Excel qui elle marche très bien.

une Idee ?

Merci encore...


Daniel.C a écrit :
Bonjour.
Essaie la macro suivante :

Sub Impression()
Dim Fich As String, WordObj As Object, WordDoc As Object

Fich = Dir(ThisWorkbook.Path & "*.xlsm")
Do While Fich <> ""
Workbooks.Open ThisWorkbook.Path & "" & Fich
For Each sh In ActiveWorkbook.Sheets
sh.PrintPreview
Next sh
ActiveWorkbook.Close False
Fich = Dir
Loop
Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
'Set WordObj = GetObject(, "Word.Application")
Fich = Dir(ThisWorkbook.Path & "*.docx")
Do While Fich <> ""
Set WordDoc = WordObj.documents.Open(ThisWorkbook.Path & "" & Fich)
WordDoc.PrintPreview
WordDoc.Close
Fich = Dir
Loop
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub

Cordialement.
Daniel

Bonjour,

Je voudrais faire une macro simple qui imprimerais tous les fichiers
(.xlsm et .docx) du dossier dans lequel se trouve le fichier Excel
contenant la macro.

Je voudrais juste que le prompt d'impression apparaisse pour chaque
feuille afin de choisir les options d'impression. Une fois le bouton
imprimer pressé, la macro passe au fichier suivant et affiche le
prompt d'impression du fichier suivant.

Merci de votre aide.

Cordialement

Tibo












Avatar
Daniel.C
> Pour le point d'arret, je ne sais pas comment m'y prendre pour le moment mais
je vais aller faire un tour dans l'aide de VBA...


Pour mettre un ppoint d'arrêt :
- clique sur l'instruction "Loop", appuie sur la touche F9;
- clique sur l'instruction "Loop", menus Débogage, Basculer le point
d'arrêt;
- clique dans la marge en face de l'instruction "Loop"
Mêmes manips pour ôter le point d'arrêt, qui de toutes manières est
supprimé par la fermeture du classeur.
Daniel
Avatar
michdenis
Bonjour,

En reprenant la macro de Daniel, on arrive à faire ceci :

'--------------------------------------
Sub Impression()
Dim Fichier As String, WordObj As Object, WordDoc As Object
Dim Arr(), Chemin As String, Wk As Workbook, Elt As Variant

Chemin = ThisWorkbook.Path & ""

Arr = Array("*.do*", "*.xls*")

For Each Elt In Arr
Fichier = Dir(Chemin & "" & Elt)
Select Case Elt
Case Arr(0)
Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
WordObj.Activate
Do While Fichier <> ""
Set WordDoc = WordObj.documents.Open(Chemin & Fichier)
WordDoc.PrintPreview
Do While WordObj.PrintPreview = True
DoEvents
Loop
WordDoc.Close False
Fichier = Dir()
Loop
WordObj.Quit
Set WordDoc = Nothing
Set WordObj = Nothing

Case Arr(1)
ThisWorkbook.Activate
Do While Fichier <> ""
Set Wk = Workbooks.Open(Chemin & Fichier)
For Each sh In Wk.Sheets
sh.PrintPreview
Next
Wk.Close False
Fichier = Dir()
Loop
Set Wk = Nothing
End Select
Next
End Sub
'------------------------------------------------
Avatar
michdenis
Pour une meilleure compréhension, les fichiers "Word"
se ferme dès que tu fermes le mode "PrintPreview" pour
afficher le fichier suivant du répertoire.