VBA Savoir si quelqu'un utilise fichier Excel

Fermé
Thomas8080 Messages postés 15 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 16 juin 2012 - 8 juil. 2009 à 18:44
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 9 juil. 2009 à 09:47
Bonjour,
J'ai cherché un peux partout dans les forums mais la réponse est toujours incomplète.
Voilà le problème.
Deux personnes (pas bien compétentes) vont employer le même fichier.
Je voudrais créer une macro qui me permet de savoir si le fichier est déjà utilisé par l'autre personne (une série d'actions);
sinon ouverture du fichier, actions et fermeture du fichier.

J'ai trouvé
Windows("Var_Chemin & Var_Nom_fichier_base").Activate
If Err <> 0 Then
mais en réalité l'erreur ne reconnait pas si le fichier est ouvert ou fermé... :-(

Je ne sais pas comment faire.

Merci beaucoup pour votre aide

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 juil. 2009 à 09:47
Bonjour,

Trouvé chez Frederic SIgonneau
http://frederic.sigonneau.free.fr/code/Fichiers/DetruireTousFichiersDossier.txt

Function IsFileOpen(filename As String)
'auteur inconnu, mpep
Dim filenum As Integer, errnum As Integer

  On Error Resume Next   ' Turn error checking off.
  filenum = FreeFile()   ' Get a free file number.
  ' Attempt to open the file and lock it.
  Open filename For Input Lock Read As #filenum
  Close filenum          ' Close the file.
  errnum = Err           ' Save the error number that occurred.
  On Error GoTo 0        ' Turn error checking back on.

  ' Check to see which error occurred.
  Select Case errnum
           
    ' No error occurred.
    ' File is NOT already open by another user.
    Case 0
      IsFileOpen = False

    ' Error number for "Permission Denied."
    ' File is already opened by another user.
    Case 70
      IsFileOpen = True

    ' Another error occurred, file is being queried.
    Case Else
      Error errnum
  End Select

End Function


Etant en monoposte, je ne puis tester, donc....
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 juil. 2009 à 19:58
bonsoir,

cette fonction te renvoie 'true" si le classeur est ouvert

Function FichOuvert(F As String) As Boolean
'Auteur: Didier_mdf (merci) site INCONTOURNABLE :http://www.mdf-xlpages.com/
Dim Wk As Workbook
On Error Resume Next
Set Wk = Workbooks(F)
On Error GoTo 0
FichOuvert = Not Wk Is Nothing
End Function

F est le fullname du classeur
0
Thomas8080 Messages postés 15 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 16 juin 2012
8 juil. 2009 à 20:43
Bonsoir et merci beaucoup pour votre suggestion. Malheureusement le problème reste! Je dois passer le nom du fichier en variable et cela empêche la macro de fonctionner. De plus la fonction regarde sur "mes" classeur pour voir s'ils sont ouvert alors que, l'utilisateur qui pourrait avoir ouvert le fichier, n'est pas sur le même ordi!

Merci quand même

*****************
J'ai, entretemps, trouvé un bout de fonction

Private Function EstDansCollection(Coln As Object, Item As String) As Boolean
Dim obj As Object
On Error Resume Next
Set obj = Coln(Item)
EstDansCollection = Not obj Is Nothing
End Function

mais le problème ici est que la valeur qui passe la fontion doit être en claire et pas sous forme de variable!

Merci à tous.

J'attends vos lumières
0