Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

obtenir liste des macros ds un project

Hellboy

XLDnaute Accro
Bonjour a tous

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.

Merci à l'avance de votre aide !
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Hellboy

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.

Bon Week End
@+Thierry
 

MichelXld

XLDnaute Barbatruc
bonjour Philippe

j'espere que cette procedure pourra t'aider


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

Ajout = Ajout + x + 2
Next VBCmp

End Sub




bonne soiree
MichelXld
 

MichelXld

XLDnaute Barbatruc
bonjour cher @+Thierry

Ouuppss... désolé de ne pas t'avoir salué , nos messages se sont croisés

...en tout cas ce lien ne me rajeunit pas : j'en étais encore à mes balbutiements en VBA , mais heureusement que j'ai eu un bon prof ...;o)


bon week end
MichelXld

Message édité par: MichelXld, à: 01/07/2005 19:02
 

Hervé

XLDnaute Barbatruc
Bonsoir hellboy, thierry, michelxld

y'a du beau monde sur ce fil

petite question à Michel :

le fait d'activer la référence :Visual basic For Application Extensibility 5.3

permet de déclarer dans ta macro VBCmp du type VBComponent et non object.

mais ce type de référence sert-elle seulement aux déclarations de variables ????

De plus ou trouvez vous de la doc sur les références, l'aide excel est pauvre, et sur le web, je trouve pas grand chose.

En vous remerciant par avance de vos eclaircissements.

salut

PS : désolé hellboy de squatter ton fil, mais l'occasion était trop bonne pour ma question.
 

MichelXld

XLDnaute Barbatruc
bonjour cher Hervé

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


je te souhaite un bon week end
MichelXld
 

Hellboy

XLDnaute Accro
Bonjoura tous

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

Est-ce que l'un de vous comprend ma bêtise ?

Je joins mon erreur en image.

Merci !


[file name=Erreur.zip size=10121]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Erreur.zip[/file]


test




Message édité par: Hellboy, à: 04/07/2005 02:25

Message édité par: Hellboy, à: 04/07/2005 02:30

Message édité par: Hellboy, à: 04/07/2005 12:07

Message édité par: Hellboy, à: 04/07/2005 23:33

Message édité par: Hellboy, à: 05/07/2005 03:45

Message édité par: Hellboy, à: 05/07/2005 03:47

Message édité par: Hellboy, à: 05/07/2005 03:57

Message édité par: Hellboy, à: 05/07/2005 04:01

Message édité par: Hellboy, à: 05/07/2005 04:16

Message édité par: Hellboy, à: 05/07/2005 04:18

Message édité par: Hellboy, à: 05/07/2005 04:32

Message édité par: Hellboy, à: 05/07/2005 04:33
 

Pièces jointes

  • Erreur.zip
    28.8 KB · Affichages: 17
  • Erreur.zip
    28.8 KB · Affichages: 16
  • Erreur.zip
    28.8 KB · Affichages: 18

Hellboy

XLDnaute Accro
re

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) =

On continue ...
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

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 ( )

Bon dimanche à vous tous

Salut
 
D

DBP

Guest
Bonjour le Forum,
Bonjour Hervé,

Hervé,

Je pense que tu vas vite apprendre l'anglais va sur ce lien :

Ce lien n'existe plus

Je te donne une astuce dans le chemin du lien de MichelXLD il y un '/en-us/', il suffit de le remplacer par '/fre/' pour l'avoir en français.

C'est ce que j'ai appliqué et cela a marché surement par chance. Il y avait la traduction déjà faite. Je ne garantie pas que cela marchera toujours.

Bernard.
 

Hellboy

XLDnaute Accro
Bonjour a tous

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 ?

Merci !
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Hellboy, Hervé, Michel, DBP, le Fil, le Forum

Pour ta dernière question :

Vu que tu utilises AddItem tu ne pourras pas faire de 'ColumnHeads', on avait déjà planché la dessus sur le Forum XLD First Generation Lien supprimé

Pour masquer par contre une Colonne => ColumnWidths
Exemple
Private Sub UserForm_Initialize()
   
With Me.ListBox1
        .ColumnCount = 4
        .ColumnWidths = '0;100;0;50;'
   
End With
End Sub

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)

Bon Aprèm
@+Thierry
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…