Macro qui empêche l'ouverture d'un classeur déjà ouvert

Bonjour à tous,

Je suis à la recherche d'une macro qui empêche l'ouverture d'un classeur si celui est déjà ouvert par un autre utilisateur (classeur présent dans un drive).

Merci.

Bonjour,

une fonction qui te permet de tester le fichier avant de l'ouvrir :

Function IsFileOpen(filename As String)
    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.
        Case Else
            Error errnum
    End Select
End Function

si elle te retourne 0 c'est que le fichier est disponible.
eric

Bonjour Eric,

Merci beaucoup de m'avoir répondu, je vais tester ça.

youssouf.

Bonjour Eric,

J'ai essayé ton code mais ça ne marche pas pour moi.

Je l'ai rentré dans le thisworkbook d'un classeur vierge.

Une solution peut être?

Merci

Bonjour,

une fonction se met dans un module standard.
Ensuite il faut lui passer le fichier à contrôler

If IsFileOpen("c:\tmp\ton_fichier.xlsx") then
   msgbox "fichier non disponible"
Else
    ' ouvrir fichier
    ' ...
End If

eric

Bonjour Eric,

Je n'avais pas vu ta réponse.

J'ai essayé ton code , il fonctionne, mais quand je fait un test avec un autre ordi il ne détecte pas le fichier.

Pour le moment j'abandonne.

Merci pour le temps consacré.

Youssouf.

Rechercher des sujets similaires à "macro qui empeche ouverture classeur deja ouvert"