Bonjour,
Auriez-vous une macro permettant de lister toutes les variables contenues dans un module ou les modules d'un projet vba?
Merci beaucoup de votre aide,
Bon dimanche
Version imprimable
Bonjour,
Auriez-vous une macro permettant de lister toutes les variables contenues dans un module ou les modules d'un projet vba?
Merci beaucoup de votre aide,
Bon dimanche
Bonjour,
Voilà déjà une procédure qui renvoie une table contenant la liste des modules présents dans un classeur
Exemple d'une procédure qui l'invoqueCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Function GetModulesName(Optional objWorkbook As Workbook) As Variant ' Renvoie une table contenant le nom des modules du projet définit par l'argument objWorkbook (ActiveWorkbook par défaut) ' Philippe Tulliez (www.magicoffice.be) ' Arguments ' [objWorkbook] - Nom du classeur (d:=ActiveWorkbook) ' Version : 1.1 ' Déclaration des variables Dim Modules As VBComponents Dim Module As VBComponent Dim C As Integer Dim TableName() Dim ModuleType As Byte ' If objWorkbook Is Nothing Then Set objWorkbook = ActiveWorkbook Set Modules = objWorkbook.VBProject.VBComponents ReDim TableName(Modules.Count) For Each Module In Modules ' Type (1 Module standard - 2 module de classe, 3 UserForm 100 module feuille) ModuleType = IIf(Module.Type > 4, 4, Module.Type) TableName(C) = Str$(ModuleType) & "-" & Module.Name C = C + 1 Next GetModulesName = TableName ' Set Modules = Nothing: Set Module = Nothing End Function
Les noms des modules sont préfixés d'un chiffre (de 1 à 4) suivi d'un tiret (1 Module standard - 2 module de classe, 3 UserForm, 4 module feuille)Code:
1
2
3
4
5
6
7
8
9 Sub TestGetModulesName() Const WorkbookName As String = "Mon classeur.xlsm" Dim tbl As Variant Dim Elem As Integer tbl = GetModulesName(Workbooks(WorkbookName)) For Elem = LBound(tbl) To UBound(tbl) Debug.Print tbl(Elem) Next End Sub
Important
- Nécessite d'activer la référence "Visual basic For Application Extensibility 5.3"
- Pour fonctionner, l'option Accès approuvé au modèle d'objet du projet VBA doit être coché