Sub Impression()
Dim Chemin As String, ExcelAppli As Object, OpFichier As Object, FichierDejaOuvert As Boolean
FichierDejaOuvert = False
Chemin = Application.GetOpenFilename 'recuperation du fichier
On Local Error Resume Next
Set ExcelAppli = GetObject(, "Excel.Application") 'ici on essaye de recuperer une session excel existante
If Nothing Is ExcelAppli Then 'si pas de process excel en cours
Set ExcelAppli = CreateObject("Excel.Application") 'on lance excel
'un petit truc en passant, ici vous pouvez ajouter : ExcelAppli.visible = True si vous voulez ouvrir excel graphiquement
Set OpFichier = ExcelAppli.Workbooks.Open(Chemin) 'on ouvre le fichier
OpFichier.PrintOut Copies:=1, Collate:=True 'on lance l'impression
OpFichier.Close False 'on ferme le fichier
ExcelAppli.Quit 'on ferme excel
Else 'process excel en cours
On Error Resume Next
ExcelAppli.Workbooks(Dir(Chemin)).Activate 'on verifi si ce fichier est deja ouvert
If Err = 9 Then 'il n'est pas ouvert
ExcelAppli.Application.ScreenUpdating = False
Set OpFichier = ExcelAppli.Workbooks.Open(Chemin) 'on l'ouvre
Else 'il est deja ouvert
Set OpFichier = ExcelAppli.ActiveWorkbook 'on le recupere
FichierDejaOuvert = True
End If
On Error Resume Next
OpFichier.PrintOut Copies:=1, Collate:=True 'on lance l'impression
If FichierDejaOuvert = False Then
OpFichier.Close False 'le fichier n'etait pas ouvert donc on le referme
ExcelAppli.Application.ScreenUpdating = True
End If
Err.Clear
End If
End Sub