Problème Fichier Lecteur Seul

Le
Guillaume MARANDE
Bonjour,

Voici mon problème :

Sur un fichier excel (Microsoft Excel 2003), j'aimerai que quand il est déjà
ouvert par une personne et qu'il y a une autre personne qui veut ouvrir le
même fichier, un message apparaisse en disant que le fichier est déjà ouvert
et ne peut pas être ouvert une fois de plus.

J'essaye de l e faire avec une macro VBA mais je ne trouve pas.

Merci de me dire comment je peux faire.

Guillaume
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4987841
Déjà parue sur ce forum, la réponse suivante :
(je n'ai pas l'environnement pour tester ça !)


----------Début de copie----------

Moi j'ai un eu problème similaire en réseau NT avec Excel 2000.
Suite à l'aide de plusieurs sur ce forum, (encore merci à El-Joker, Frédéric
Sigonneau et Thierry Rural, voir ficelle "Macro Workbooks.Open sur fichier
déjà en cours de lecture" du 10/12/2001 11:54) j'ai fini par réussir à faire
çà...

Pour ce genre de fichiers qui sont souvent ouverts (pas longtemps) par
d'autres utilisateur, j'ai créé une interface d'ouverture, (en fait un
personnal.xls dans le startup).
Cette interface (non hiden) contient les boutons d'ouverture directe des
fichiers en question.
Dans l'exemple le bouton d'ouverture de "Demand.xls" lance la macro
"CallDemands"

C'est radical! si le fichier est ouvert = Message (et il s'ouvre pas) sinon
il s'ouvre.

Voici le code : (à mettre dans un module standard du personnal.xls)

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer

On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Sub CallDemands()
Dim Msg, Style, Title
If IsFileOpen("P:DevelopmentsDemand.xls") Then
MsgBox "File Already in use" & Chr(13) & "Please Try Latter"
Else
Workbooks.Open "P:DevelopmentsDemand.xls"
End If
End Sub

----------Fin de copie----------




"Guillaume MARANDE" %
Bonjour,

Voici mon problème :

Sur un fichier excel (Microsoft Excel 2003), j'aimerai que quand il est déjà
ouvert par une personne et qu'il y a une autre personne qui veut ouvrir le
même fichier, un message apparaisse en disant que le fichier est déjà ouvert
et ne peut pas être ouvert une fois de plus.

J'essaye de l e faire avec une macro VBA mais je ne trouve pas.

Merci de me dire comment je peux faire.

Guillaume
Guillaume MARANDE
Le #4985671
Bonjour,

Je n'arrive pas à faire fonctionner ta procédure. Pourrais-tu me donner un
fichier exemple pour m'aider ?

Merci d'avance

Guillaume


"MichDenis" %
Déjà parue sur ce forum, la réponse suivante :
(je n'ai pas l'environnement pour tester ça !)


----------Début de copie----------

Moi j'ai un eu problème similaire en réseau NT avec Excel 2000.
Suite à l'aide de plusieurs sur ce forum, (encore merci à El-Joker,
Frédéric
Sigonneau et Thierry Rural, voir ficelle "Macro Workbooks.Open sur fichier
déjà en cours de lecture" du 10/12/2001 11:54) j'ai fini par réussir à
faire
çà...

Pour ce genre de fichiers qui sont souvent ouverts (pas longtemps) par
d'autres utilisateur, j'ai créé une interface d'ouverture, (en fait un
personnal.xls dans le startup).
Cette interface (non hiden) contient les boutons d'ouverture directe des
fichiers en question.
Dans l'exemple le bouton d'ouverture de "Demand.xls" lance la macro
"CallDemands"

C'est radical! si le fichier est ouvert = Message (et il s'ouvre pas)
sinon
il s'ouvre.

Voici le code : (à mettre dans un module standard du personnal.xls)

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer

On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Sub CallDemands()
Dim Msg, Style, Title
If IsFileOpen("P:DevelopmentsDemand.xls") Then
MsgBox "File Already in use" & Chr(13) & "Please Try Latter"
Else
Workbooks.Open "P:DevelopmentsDemand.xls"
End If
End Sub

----------Fin de copie----------




"Guillaume MARANDE" news:
%
Bonjour,

Voici mon problème :

Sur un fichier excel (Microsoft Excel 2003), j'aimerai que quand il est
déjà
ouvert par une personne et qu'il y a une autre personne qui veut ouvrir le
même fichier, un message apparaisse en disant que le fichier est déjà
ouvert
et ne peut pas être ouvert une fois de plus.

J'essaye de l e faire avec une macro VBA mais je ne trouve pas.

Merci de me dire comment je peux faire.

Guillaume





Publicité
Poster une réponse
Anonyme