Detecter un fichier déjà ouvert.

Résolu
Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014 - 15 oct. 2010 à 22:25
Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014 - 16 oct. 2010 à 16:48
Bonjour à tous.

Je viens de mettre au point une application utilisée par plusieurs personnes. Chaque intervenant possède un classeur Excel qui sert d'interface, et ces classeurs viennent lire ou écrire dans un classeur unique qui fait office de base de données (je sais que je me suis compliqué la vie, mais je ne sais pas gérer une base Acces avec excel).

Le temps d'accès à la feuille commune est court; 1 ou 2 secondes, aussi je ne me suis pas préoccupé de ce qui se passerait si 2 personnes y accédaient en même temps; mais aussi improbable que ce soit c'est arrivé aujourd'hui.

J'aimerai savoir comment faire une procédure dans mon code qui puisse détecter que la feuille est déjà ouverte, pour stopper l'exécution et afficher une msgbox qui demande de retenter ultérieurement.

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 oct. 2010 à 14:29
Salut

Problème épineux puisque Excel ouvre quand même le fichier et parfois, sans dire que c'est en lecture seule à cause du fait que le classeur est déjà ouvert.

Il ne faut pas que les utilisateurs ouvrent directement le classeur, sinon tu ne pourras pas contrôler ce phénomène.
Il faut qu'ils ouvrent un classeur local, sur leur machine, qui aura pour tâche de tenter d'ouvrir le classeur unique.
Je te propose cette technique, à mettre dans le classeur local, dans le code du Workbook :
Private Sub Workbook_Open()
    Dim ff As Integer
    Dim sFile As String
    sFile = "\\LeServeur\Le répertoire\Le classeur.xls"
    ff = FreeFile
    On Error Resume Next
    Open sFile For Binary Access Read Lock Read As #ff
    If Err.Number = 0 Then
        ' Ok, on a pu ouvrir le fichier sans erreur
        ' Il était donc disponible
        Close #ff
        Workbooks.Open sFile
    Else
        ' Le fichier n'est pas disponible (erreur 70)
        Err.Clear
        MsgBox "Le fichier est actuellement en cours d'utilisation."
    End If
End Sub

Tu n'as plu qu'à broder autour de ce test.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014
16 oct. 2010 à 16:48
Merci beaucoup; je vais essayer ça sur le champ.
0
Rejoignez-nous