La société de Richard, comme beaucoup d’autres, utilise un peu Excel. En fait, ils ont des milliers et des milliers de classeurs Excel qu’ils ont collectés au fil des ans. Richard a besoin d’un moyen de savoir lesquels de ces classeurs contiennent des macros VBA, sans avoir à ouvrir et à inspecter chaque classeur individuellement. Il se demande s’il existe un moyen simple de le faire.

Une façon plutôt simpliste de trouver tous vos classeurs contenant des macros consiste simplement à rechercher tous les fichiers qui utilisent les extensions XLSM ou XLSB.

Les classeurs qui contiennent des macros doivent être stockés dans des fichiers utilisant ces extensions. Bien qu’il ne soit pas infaillible à 100%, c’est un bon point de départ.

Vous pouvez également utiliser les fonctionnalités de recherche de Windows (en dehors d’Excel)

et recherchez tout fichier contenant le texte «End Sub» ou «End Function». Cela identifiera rapidement tout classeur candidat potentiel, car toute procédure VBA doit utiliser l’une de ces deux instructions à sa fin.

Si vous utilisez des classeurs hérités (ceux développés à l’aide du format de fichier d’Excel 2003), vous devez en fait regarder à l’intérieur de chacun des classeurs. Cela peut être effectué par programme, ce qui signifie que vous pouvez avoir une macro qui ouvre chaque classeur dans un dossier et l’examine pour voir s’il contient des macros.

Par exemple, vous pouvez créer une macro qui parcourt chacun des fichiers d’un répertoire et détermine si le fichier est un classeur Excel. Il peut ensuite ouvrir le fichier et vérifier s’il contient un projet VBA.

Sub FindMacros()

Dim sPath As String     Dim sFile As String     Dim sFoundFiles As String

'specify directory to use - must end in "\"

sPath = "C:\MyData\Excel Data\"



sFile = Dir(sPath)

Do While sFile <> ""

If InStr(sFile, ".xls") > 0 Then             Workbooks.Open (sPath & sFile)

If Workbooks(sFile).HasVBProject Then                 sFoundFiles = sFoundFiles & sFile & vbCrLf             End If             Workbooks(sFile).Close (False)

End If         sFile = Dir     ' Get next filename     Loop     If Len(sFoundFiles) = 0 Then         MsgBox "No workbooks found that contain macros"

Else         sFoundFiles = "The following workbooks contain macros:" & _           vbCrLf & vbCrLf & sFoundFiles         MsgBox sFoundFiles     End If End Sub

Cet exemple utilise la propriété HasVBProject (introduite dans le modèle d’objet Excel dans Excel 2007) pour déterminer si le fichier contient des macros ou non. Une fois terminé, la macro affiche une boîte de message qui répertorie les feuilles de calcul contenant des macros.

_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 (12466) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.

Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Finding_Workbooks_Containing_Macros [Recherche de classeurs contenant des macros].