Vous ne voulez pas qu'un utilisateur puisse accéder en lecture seule à un fichier source Excel déjà ouvert, mais qu'il soit averti que le fichier source est ouvert. Pour cela vous créez un fichier d'appel vers qui pointera le raccourci initial du fichier source qu'il faudra donc modifier lui aussi.
Source / Exemple :
'Dans This workbook
Private Sub Workbook_Open()
MonExcelOuvert
end sub
'Dans un module
Sub MonExcelOuvert()
Test_XlsOuvert ("Chemin\NomFichierTesté") 'exemple :("C:\EstOuvert.xls")
End Sub
Function Test_XlsOuvert(ByVal Fichier As String)
'D'après S Nikator (http://www.vbfrance.com/forum/sujet-SAVOIR-SI-EXCEL-EST-DEJA-OUVERT_1422775.aspx)
Dim FileNum As Long, TheError As Long
FileNum = FreeFile()
On Error Resume Next
Open Fichier For Input Lock Read As #FileNum
Close FileNum
TheError = Err
On Error GoTo 0
If TheError = 0 Then
Workbooks.Open Fichier 'Appelle l'ouverture du Programme Excel
ThisWorkbook.Close savechanges:=False 'Fermeture du fichier d'appel
ElseIf TheError = 70 Then
MsgBox "Vous ne pouvez pas lancer le Programme." & vbCrLf & _
" Un autre utilisateur est déjà connecté." _
, vbCritical, "Utilisateur déjà connecté..." 'Utilisateur connecté
ThisWorkbook.Close savechanges:=False 'Fermeture du fichier d'appel
Else
MsgBox " Erreur Inattendue N° " & TheError & vbCrLf & _
" Le Programme appelé est inaccessible." & vbCrLf & _
"Vérifiez son chemin ou vos paramètres de connexion. ", vbCritical, "Erreur Critique" 'Erreur!
ThisWorkbook.Close savechanges:=False 'Fermeture du fichier d'appel
End If
End Function
Conclusion :
Au lancement du fichier d'appel par le raccourci initial au fichier source modifié pour pointer sur le fichier d'appel, un MsgBox indiquera si le fichier source est déjà ouvert, sans proposer d'accès en lecture seule au fichier source ; et bien sûr s'il ne l'est pas déjà, il s'ouvrira.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.