Bonjour cher homonyme, Rober, le Forum
Ah doublon de Fil, ce n'est pas bien ça Thierry !
Sinon pour une première base, je te conseille d'analyser ce code :
Option Explicit
Private Function TestWorkBook(WBString As String) As Boolean
Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks(WBString)
If Err.Number <> 0 Then
TestWorkBook = False
Else
TestWorkBook = True
End If
End Function
Sub TestIfWorkBookIsOpen()
Dim WBString As String
WBString = 'principal.xls'
MsgBox 'Le Classeur ' & WBString & ' est il ouvert ? : ' & TestWorkBook(WBString)
End Sub
En effet, plus au moins inspiré de la méthode d'un très grand Thierry (Ti_) de ce Forum, la Function 'TestWorkBook' te permettra de savoir si ton Classeur 'principal.xls' est déjà ouvert ou pas...
Le retour d'information est une Boolean (Valeur Vraie ou Fausse).
Le concept est assez simple, on essaie de faire un Set d'Object sur le Classeur Principal.xls, si il est ouvert, la Boolean sera 'Vraie' puisqu'il n'y aura pas d'erreur (Err.Number = 0) par contre si il n'est pas ouvert la Boolean sera Fausse il y aura une erreur qui aura un numéro (Err.Number <> 0)...
A partir de là on sait si le Classeur est ouvert ou non...
Revoici la même procédure, implémentée pour correspondre un peu plus à ton besoin :
Option Explicit
Const ThePath As String = 'C:\Documents and Settings\TE\Local Settings\Temp\'
Private Function TestWorkBook(WBString As String) As Boolean
Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks(WBString)
If Err.Number <> 0 Then
TestWorkBook = False
Else
TestWorkBook = True
End If
End Function
Sub TestIfWorkBookIsOpen()
Dim WBString As String
WBString = 'USF_ADO_Calculs_Collector_V01_03.xls'
If TestWorkBook(WBString) = False Then
Workbooks.Open ThePath & WBString
Else
Workbooks(WBString).Activate
End If
End Sub
Bon Aprèm
[ol]
@+Thierry[/ol]