Voilà 3 types de solution que l'on m'a proposé lorsque j'ai eu le même problème. J'utilise la 1ere possibilité
Bon courage
'=============================
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function
'======================
Sub CallDemands()
Dim Msg, Style, Title
If IsFileOpen("P:\Developments\Demand.xls") Then
MsgBox "File Already in use" & Chr(13) & "Please Try Latter"
Else
Workbooks.Open "P:\Developments\Demand.xls"
End If
End Sub
2ème version:
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks("tonfichier.xls")
On Error GoTo 0
If Wbk Is Nothing Then Workbooks.Open "C:\tonfichier.xls" Else Set Wbk = Nothing
3ème version
Sub TextStreamTest()
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fs, f, ts, s
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile "test1.txt"
Set f = fs.GetFile("test1.txt")
Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
ts.Write "Christine"
ts.Close
Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
s = ts.ReadLine
MsgBox s
ts.Close
End Sub