Dudulle32
Messages postés42Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention31 janvier 2014
-
15 oct. 2010 à 22:25
Dudulle32
Messages postés42Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention31 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)