Les macros sont souvent utilisées pour découper, découper en dés et traiter les informations contenues dans les classeurs. Cela suppose, bien sûr, que le classeur qui contient les informations est réellement ouvert. Si ce n’est pas le cas, votre macro devra évidemment inclure du code pour ouvrir réellement le classeur nécessaire.

L’ouverture d’un classeur peut vraiment ralentir une macro; il faut du temps pour accéder au disque et charger le fichier. Ainsi, si votre macro peut vérifier si un classeur est ouvert avant de devoir essayer de l’ouvrir, vous pouvez accélérer considérablement vos macros si le classeur est déjà ouvert.

Une manière très flexible d’aborder la tâche de vérifier si un classeur est ouvert consiste à utiliser une fonction qui effectue la vérification, puis renvoie simplement une valeur TRUE ou FALSE selon que le classeur est ouvert. La courte macro suivante effectue cette tâche succincte:

Function AlreadyOpen(sFname As String) As Boolean     Dim wkb As Workbook     On Error Resume Next     Set wkb = Workbooks(sFname)

AlreadyOpen = Not wkb Is Nothing     Set wkb = Nothing End Function

Pour utiliser la fonction, transmettez-lui simplement le nom du classeur que vous souhaitez vérifier, de la manière suivante:

sFilename = "MyFileName.xls"

sPath = "C:\MyFolder\MySubFolder\"

If AlreadyOpen(sFilename) Then         'Do not have to open     Else         Workbooks.Open sPath & sFilename     End If

_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 (10985) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Checking_if_a_Workbook_is_Already_Open [Vérifier si un classeur est déjà ouvert].