VBA - Déterminer si un excel partagé est déjà ouvert (sur Internet et non en local)

  • Initiateur de la discussion Initiateur de la discussion itolib
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

itolib

XLDnaute Nouveau
Bonjour à tous,

Je débute en VBA et je suis bloqué depuis plusieurs jours sur un problème. Je travaille sur un projet qui concerne une dizaine de personne : chacun d'entre eux travaille sur un fichier en local et sauve des éléments via VBA qui vont mettre-à-jour un fichier database stocké sur Internet.

La modification de cette base prend quelques secondes, mais la macro plante si 2 sauvegardes sont faites en simultané. J'aimerais donc rajouter dans la macro un code de vérification qui empêcherait l'ouverture du fichier si ce dernier est en cours d'utilisation.

J'ai trouvé énormément de fonctions sur internet dédiées à ce problème (tous les isfileopen() ...). Chacune d'entre elles fonctionne très bien en local, mais aucune sur un fichier stocké sur internet (sharepoint en l'occurence). Dès que je mets un chemin en http, elles considèrent le fichier utilisé en permanence et empêchent toute sauvegarde, même si ce n'est pas le cas, et je n'arrive pas à trouver d'exemples ou de solutions sur Internet.

Est-ce que quelqu'un aurait une idée ou a déjà été confronté au même problème ?

Merci beaucoup d'avance !
 
Re : VBA - Déterminer si un excel partagé est déjà ouvert (sur Internet et non en lo

Personne n'aurait une idée ?

Avec toutes les fonctions du type ci-dessous, lorsque le fichier est en réseau, au lieu d'avoir un true ou false, j'ai le message d'alerte "Ce fichier est actuellement occupé par xxx. Voulez-vous ouvrir ce fichier en lecture seule ?", ce qui bloque la bonne exécution de la macro. Et je n'arrive absolument pas à passer outre.


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
End Select
End Function
 
Re : VBA - Déterminer si un excel partagé est déjà ouvert (sur Internet et non en lo

Excusez-moi pour le 3e message, je pense avoir trouver la solution.

Lorsque le message d'occupation du fichier apparaît, je fais un SendKeys "{TAB}~" pour l'ouvrir en lecture seule puis un if pour savoir si le fichier est un lecture seule (auquel message + fin macro) ou non (auquel cas execution du reste de la sauvegarge sur le fichier en ligne).
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
17 K
Compte Supprimé 979
C
Retour