Sub impression2()
Dim Fichier As String, WordObj As Object, WordDoc As Object
Dim Arr(), Chemin As String, Wk As Workbook, Elt As Variant
Chemin = "Z:\protocole\" & Sheets("Sommaire").Cells(28, 2).Value & "\Courrier\Accuses reception\"
Arr = Array("*.docx", "*.xls*", "*.pdf")
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.PrintOut
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.PrintOut
Next
Wk.Close False
Fichier = Dir()
Loop
Set Wk = Nothing
End Select
Next
Case Arr(2)
End Sub
Salut,comme déjà précisé plus haut voir avec ShellExecute
Option Explicit
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
Dim Fichier As String, WordObj As Object, WordDoc As Object
Dim Arr(), Chemin As String, Wk As Workbook, Elt As Variant
Chemin = "Z:\protocole\" & Sheets("Sommaire").Cells(28, 2).Value & "\Courrier\Accuses reception\"
Arr = Array("*.docx", "*.xls*", "*.pdf")
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.PrintOut
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)
Wk.PrintOut
Wk.Close False
Fichier = Dir()
Loop
Set Wk = Nothing
Case Arr(2)
Dim x As Long
x = FindWindow("XLMAIN", Application.Caption)
ShellExecute x, "print", Chemin & Fichier, "", "", 1
End Select
Next
End Sub
Est-il possible de définir une cellule , par exemple D10, qui définirait le chemin voulu? En fait Z:\protocole\ apparaitrait dans une cellule et non en dur dans la macro.
Chemin = Range("A1").Value