Vérifier si fichier Excel ouvert sur serveur

Bonjour,

j’utilise un fichier Excel « formulaire test » dans lequel je rentre des données
j’ai une macro qui me permet entre autres d’enregistrer ces données dans un autre fichier Excel « enregistrement test » sur le serveur de mon entreprise et donc disponible à d’autres utilisateurs
lorsque le fichier sur le serveur est ouvert par un autre utilisateur, je ne peux pas lancer ma macro correctement
ma question: comment faire pour savoir si le fichier sur le serveur « enregistrement test » est déjà ouvert et si c’est le cas est-il possible de le fermer pour pouvoir exécuter ma macro
merci pour vos réponses

enregistrement test.xlsm (23,8 Ko)
formulaire test.xlsm (48,2 Ko)

Bonsoir
Regarde ce lien, il y a une fonction à adapter avec le lien de ton serveur naturellement
https://excel-malin.com/codes-sources-vba/vba-verifier-si-un-classeur-est-ouvert/#:~:text=Cette%20fonction%20retourne%20une%20valeur,xlsx"%20).

Regarde ce lien, il y a une fonction à adapter avec le lien de ton serveur naturellement

bonjour Mimimathy,

merci pour ta réponse
je regarde et te redis :thinking:

Mimimathy,

c’est en effet ce que je recherche :+1:
par contre je ne suis pas un spécialiste en VBA, faut-il que je fasse un copier coller de l’ensemble dans ma macro ?
à te relire

Re,

oui tu copie les deux macros que tu places dans un module
et sur la 2ème macro, sur cette ligne

MonClasseur = "C:\Test\MonClasseur.xlsx"

tu remplaces C:\Test\MonClasseur.xlsx par le chemin complet de ton classeur

merci Mimimathy

super ça fonctionne :+1:
j’ai une autre question, est-ce qu’il est possible de fermer le fichier si celui-ci est ouvert ce qui permettrait de lancer la macro

Re
Regarde cette macro (modifiée)
Remplace par tes liens MonClasseur et NomClasseur)

Sub ExempleTestOuvertureClasseur()
'par: https://excel-malin.com
    Dim Verification As Boolean
    Dim MonClasseur As String
    Dim NomClasseur As String
    
    MonClasseur = "C:\Users\Michel\Desktop\Excel Forum\Calcule_en_Vba_v001.xlsm"
    NomClasseur = "Calcule_en_Vba_v001.xlsm"
    'd'abord le test si le fichier existe
    If Len(Dir(MonClasseur)) = 0 Then 's'il n'existe pas, montrer un avertissement et quitter la macro
        MsgBox "ERREUR: Le Classeur: [" & MonClasseur & "] n'existe pas..."
        Exit Sub
    Else
    End If
    
    'si le Classeur existe, vérifier s'il est déjà ouvert
    Verification = EstClasseurOuvert(MonClasseur)

    If Verification = True Then
        If MsgBox("Le Classeur: [" & NomClasseur & "] est déjà ouvert..., Voulez-vous le fermer ?", vbYesNo, "Demande de confirmation") = vbYes Then
        
          Workbooks(NomClasseur).Close False
        End If
    Else
        MsgBox "Le Classeur: [" & NomClasseur & "] n'est pas ouvert..."
    End If
End Sub

Bonsoir Mimimathy,

je viens de faire l’essai
ça marche au poil :clap:
merci encore