Sub xy()
Dim MonClasseur As Workbook, Plage As Range
Set MonClasseur = Classeur("NomClas.xls")
If MonClasseur Is Nothing Then Exit Sub
Set Plage = MonClasseur.Worksheets(1).UsedRange
'etc. …
End Sub
Function Classeur(NomFic As String, Optional ByVal Dossier As String) As Workbook
If Dossier = "" Then Dossier = ThisWorkbook.Path
If Dossier = "" Then Dossier = CurDir
On Error Resume Next
Set Classeur = Workbooks(NomFic)
If Err Then
Err.Clear: Set Classeur = Workbooks.Open(Dossier & "\" & NomFic)
If Err Then MsgBox "Il n'existe pas de classeur """ & NomFic _
& """ sur :" & vbLf & Dossier, vbCritical, "Classeur"
ElseIf UCase(Classeur.Path) <> UCase(Dossier) Then
If MsgBox("Un classeur """ & NomFic & """ est déjà ouvert, mais son chemin est :" _
& vbLf & Classeur.Path & vbLf & "et non pas :" & vbLf & Dossier & vbLf & _
"Faut-il le considérer comme celui désiré ? (sinon fermez le d'abord)", _
vbYesNo + vbExclamation, "Classeur") = vbNo Then Set Classeur = Nothing
End If
End Function