Brian a un classeur complexe qui ouvre très brièvement d’autres classeurs de support, puis les ferme, enregistrant les modifications. Il a un bureau avec trois personnes qui utilisent ses macros, et à l’occasion, ils ont un conflit où deux personnes essaient d’obtenir une ordre d’achat

numéro en même temps. Cela provoque l’ouverture du classeur PO en mode «lecture seule» pour la deuxième occurrence, ce qui est déroutant pour les utilisateurs. Brian se demande s’il existe une ligne de code VBA qui arrêtera la commande ‘ouvrir le classeur’ si le classeur cible est déjà ouvert par un autre utilisateur. De cette façon, il pourrait détecter les problèmes potentiels avant qu’ils ne surviennent.

Il est beaucoup plus facile d’avoir votre code, après l’ouverture, vérifiez si le classeur s’est ouvert en mode lecture seule. Si tel est le cas, vous pouvez prendre une mesure adaptée à votre situation. (Par exemple, vous pouvez fermer le classeur, attendre un court instant, puis réessayer l’opération et le tester.) Voici comment vérifier l’état en lecture seule:

Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx")



If wkBook1.ReadOnly Then     wkBook1.Close False End If

Notez que c’est la propriété ReadOnly qui produit les informations souhaitées. Si vous devez vérifier le fichier à l’avance, vous pouvez essayer d’utiliser certaines des instructions d’accès aux fichiers disponibles dans VBA. C’est ce que fait la fonction suivante.

Function FileIsLocked(strFileName As String) As Boolean     FileIsLocked = False     On Error Resume Next     Open strFileName For Binary Access Read Write Lock Read Write As #1     Close #1

' If an error occurs, the document is currently open     If Err.Number <> 0 Then        FileIsLocked = True        Err.Clear     End If End Function

Pour utiliser la fonction, transmettez-lui le nom (y compris le chemin d’accès complet) du classeur que vous souhaitez vérifier. La fonction renvoie True si le fichier est verrouillé et False si ce n’est pas le cas. N’oubliez pas, cependant, que depuis le moment où cette fonction vérifie le fichier jusqu’au moment où vous essayez réellement d’ouvrir le fichier, il a pu être ouvert par quelqu’un d’autre. Ainsi, la première approche (vérifier après avoir essayé d’ouvrir) peut être la meilleure approche à utiliser.)

Il convient de noter également que vous pouvez également enregistrer les autres classeurs en tant que classeurs partagés. Cela leur permettrait d’être ouverts par plusieurs utilisateurs sans aucun problème. Bien sûr, vous voudrez vérifier comment cette approche affecte les données que vous souhaitez peut-être enregistrer dans les classeurs.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (5831) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.