Ouvrir un fichier déjà ouvert

  • Initiateur de la discussion BBX
  • Date de début
B

BBX

Guest
Bonjour,

J'ai une macro qui copie des données dans un fichier commun.
Ma macro plante lorsque le fichier commun est déjà ouvert.

Comment puis je récupérer l'info que le fichier est déjà ouvert et shunter la macro pour eviter de la faire planter . Je voudrais également éviter que le message ce fichier est déjà ouvert apparaisse à l'écran.
 
Z

Zon

Guest
Salut,

Tu peux utiliser cette fonction:

Function FichierOuvert(NomC$) As Boolean
Dim I&
For I = 1 To Application.Workbooks.Count
If UCase(Workbooks(I).Name) = UCase(NomC) Then
FichierOuvert = True
Exit Function
End If
Next I
End Function


If fichierouvert("lenomdetonclasseur.xls") then msgbox "fichier déjà ouvert"


A+++
 
Y

Yeahou

Guest
Salut

tu peux tester si le classeur est ouvert par

Sub essai()
Dim Test As Boolean, Classeur_en_Cours
Test = False
For Each Classeur_en_Cours In Application.Workbooks
If Classeur_en_Cours.Name = "nomclasseur" Then Test = True
Next
If Test = False Then
'macro à exécuter si classeur non ouvert
End If
End Sub

pour les messages indésirables

Application.DisplayAlerts = False

supprime les messages de confirmation ou d'information

A+
 
P

papyjo

Guest
Bonjour
Génial les solutions ci-dessus, je vais en user pour mon compte personnel.
Mais.....

Tu peux, peut être, aussi essayer de partager le dit fichier ?.....
Outil, partage etc.. et t'affranchir ainsi de cette contrainte.
Par contre cela t'en créera d'autres (des contraintes) du fait des limitations de certaines fonctions sur les fichiers partagés
Papyjo
 
B

BBX

Guest
Merci pour vos réponses.

Le code que vous m'avez fourni fonctionne si j'ai ouvert le fichier sur mon PC.
Le pb est que c'est d'autres utilisateurs qui ouvrent le fichier de leurs postes qui sont en réseau.

Comment puis-je controler que personnes dans le réseau n'a déjà ouvert le fichier ?
Excel me propose d'ouvrir le fichier en lecture seul, puis je me servir de ce message (sans l'afficher) pour savoir si le fichier est déjà ouvert ou pas ?

Merci de vos réponses.
 
Y

yeahou

Guest
Salut

Je me suis plongé dedans pour mieux te l'expliquer et je me suis aperçu qu'elle ne fonctionne pas pour vérifier l'ouverture par d'autres utilisateurs. Excuse moi de t'avoir induit en erreur, je te cherche une soluce applicable.

A+
 
Y

Yeahou

Guest
Salut

J'ai testé le code suivant, il fonctionne, tu n'as plus qu'à le coupler avec un test fichier déja ouvert sur le poste d'origine.
J'ai créé deux fichiers 1 et 2 sur une ressource serveur
j'ai ouvert le fichier2 sur un autre poste
en lançant la macro, je récupére l'info que le fichier2 est déja ouvert ailleurs

Sub essai()

'empéche l'affichage du message ouvrir en lecture seule
Application.DisplayAlerts = False
'ouvre fichier 1
Workbooks.Open Filename:="chemin fichier 1"
'ouvre fichier2
Workbooks.Open Filename:="chemin fichier 2"
If Workbooks("fichier1").ReadOnly Then
MsgBox "fich1 déja ouvert"
End If
If Workbooks("fichier2").ReadOnly Then
MsgBox "fich2 déja ouvert"
End If
End Sub

Cette fois ci, cela devrait être bon

A+
 

Discussions similaires