Detecter un fichier déjà ouvert. [Résolu]

Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 15 oct. 2010 à 22:25 - Dernière réponse : Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 16 oct. 2010 à 14:29
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 16 oct. 2010 à 16:48
0
Merci
Merci beaucoup; je vais essayer ça sur le champ.
Commenter la réponse de Dudulle32

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.