Recherche de classeurs contenant des macros (Microsoft Excel)
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]
.