J'aimerais savoir si il est possible d'obtenir la liste des macro contenu dans un VbaProject avec une commande quelconque ?
C'est pour un project d'amélioration d'un outil de travail que certaines personnes se servent sur ce site. En gros cet outil vous permet d'avoir une belle présentation du code que vous poster sur le site.
L'outil est super bien fait, mais j'aimerais pouvoir tester quelque améliorations pratique pour ensuite en faire la suggestion au concepteur.
Mon but est de pouvoir directement a partir du VBE, faire le copier coller ds un classeur, des précèdures(macros) que l'utilisateur choisirait.
Je ne suis pas bien sûr d'avoir tout compris, mais regarde déjà ce fil avec mon copain MichelXLD
=> Lien supprimé
Pour le reste, si je ne m'abuse, notre MagicTi a fait une XLA utilitaire pour manipuler des procédures... Mais je ne sais pas où elle est ici, regarde sinon sur Vériti.
Sub listeMacros()
'activer la reference Visual basic For Application Extensibility 5.3
Dim i As Integer, Ajout As Integer
Dim Msg As String
Dim VBCmp As VBComponent
Dim x As Integer
Ajout = 1
For Each VBCmp In ThisWorkbook.VBProject.VBComponents
Msg = VBCmp.Name
With Cells(Ajout, 1)
.Interior.ColorIndex = 6
.Value = Msg
End With
x = ThisWorkbook.VBProject.VBComponents(Msg).codemodule.CountOfLines
For i = 1 To x
Cells(Ajout + i, 1) = ThisWorkbook.VBProject.VBComponents(Msg).codemodule.Lines(i, 1)
Next
si je ne dis pas de bétises , la reference la référence Visual basic For Application Extensibility 5.3 permet de piloter les objets de Visual Basic Editor
il y a des infos interessantes dans l'aide MSDN Ce lien n'existe plus
Mon travail avance, mais je suis bloqué avec l'utilisation d'un listbox. Je n'en utilise pas souvent. Mais pourtant je crois avoir la bonne façon, mais j'ai toujours une erreur qui survient.
Je veux insérer un élément dans mon listbox et je n'y arrive pas ?
Voici mon code:
Code:
Private Sub UserForm_Initialize()
Dim intLine As Integer
Dim VBCmp As VBComponent
ListeMacro.ListBox1.ColumnCount = 2
With ThisWorkbook.VBProject
For Each VBCmp In .VBComponents
With .VBComponents(VBCmp.Name)
For intLine = 2 To .CodeModule.CountOfLines
If InStr(1, .CodeModule.Lines(intLine, 1), 'Sub') > 0 Then
'ListeMacro.ListBox1.AddItem .CodeModule.Lines(intLine, 1)
ListeMacro.ListBox1.Column(1, 0) = '1' '.CodeModule.Lines(intLine, 1)
Exit For
End If
Next intLine
End With
Next VBCmp
End With
End Sub
J'ai trouver mon 'erreur'. Je ne suis pas sur de comprendre, mais il fallait que je rajoute la ligne: ListeMacro.ListBox1.AddItem avant
ListeMacro.ListBox1.Column(1, ListeMacro.ListBox1.ListCount - 1) =
Hellboy, en effet pour pouvoir initialiser une listbox ou combobox par list ou column, il faut d'abord passé par un additem, je n'ai jamais compris pourquoi aussi ( )
Michel : merci pour ta réponse et le lien, il ne me reste plus qu'a apprendre l'anglais, ce qui sera fait dans la journée ( )
J'en suis rendu ou tout est fonctionnel. Il me reste quelques détails que je ne sais pas encore comment faire. Aussi mettre de l'agrément visuel sur la boite de dialogue. Et avoir la réponse de Sylvain Nicolas, si ça lui dérange que je post un update de VBA_XLD ou si il préfère que j'en propose une nouvelle.
- Comment cacher une colonne en particulier ds un ListBox ?
- Comment mettre des entêtes aux colonne ds un ListBox ?
Pour Hervé, en fait on ne peut se passer de 'AddItem' que si l'on incrémente la ListBox directement par une boucle en séquentiel, mais sinon on peut passer directement un Tableau sur les Properties List ou Column (Selon le Sens)