Avertir qu'un fichier excel est ouvert sans accès en lecture seule

Contenu du snippet

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.

A voir également

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.