XL 2016 Empêcher l'ouverture d'un fichier Excel en cours d'utilisation

CL91220

XLDnaute Nouveau
Bonjour,

Lorsqu'on cherche à ouvrir un fichier en cours d'utilisation, Excel ouvre la boîte de dialogue intitulée "Fichier en cours d'utilisation" et propose les choix suivants: 'Lecture seule', 'Notifier' et 'Annuler'.
Je souhaite faire en sorte qu'il ne soit pas possible d'ouvrir ce fichier s'il est déjà utiliser.

J'ai rechercher dans les fonctionnalités de base offertes par Excel, mais je n'ai rien trouvé qui puisse répondre à mon pb.

Je me dis qu'en VBA, à l'ouverture du fichier excel, je peux changer un flag dans un fichier txt (de paramétrage) définissant l'état du fichier excel (en cours d'utilisation ou pas). Cela signifie que si une seconde personne ouvre le fichier excel disons en 'Lecture seule', je peux faire en sorte qu'une vérification du flag existe pour interdire si besoin l'utilisation de ce fichier... Pensez-vous que cette solution puisse être efficace? Si Excel plante, le flag ne sera pas repositionner à son état initial et il ne sera plus possible d'ouvrir le fichier autrement qu'en allant modifier le flag 'manuellement' (ou avec un autre code)


Bref, l'idéal serait qu'Excel lui-même ne propose pas l'ouverture en lecture seule ou en lecture seule avec notification
Je suis preneur de vos suggestions...

Merci par avance pour votre aide
 
Solution
Bonjour,

A mon avis tu ne pourras pas échapper au message Excel car il intervient avant même qu'un code quelconque ait pu être exécuté.

Ce que tu peux faire c'est utiliser la logique d'ouverture Excel et fermer le classeur s'il est ouvert en ReadOnly, ce qui signifie que l'utilisateur l'ouvrant dans ce mode est en concurrence avec l'utilisateur qui l'a ouvert en Edit.
VB:
Private Sub Workbook_Open()
    If Me.ReadOnly Then
        MsgBox "Classeur en cours d'édition par un autre utilisateur !"
        Me.Close SaveChanges:=False
    End If
End Sub

Dudu2

XLDnaute Barbatruc
Bonjour,

A mon avis tu ne pourras pas échapper au message Excel car il intervient avant même qu'un code quelconque ait pu être exécuté.

Ce que tu peux faire c'est utiliser la logique d'ouverture Excel et fermer le classeur s'il est ouvert en ReadOnly, ce qui signifie que l'utilisateur l'ouvrant dans ce mode est en concurrence avec l'utilisateur qui l'a ouvert en Edit.
VB:
Private Sub Workbook_Open()
    If Me.ReadOnly Then
        MsgBox "Classeur en cours d'édition par un autre utilisateur !"
        Me.Close SaveChanges:=False
    End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 208
Messages
2 086 257
Membres
103 167
dernier inscrit
miriame