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

Lister les composants du vbaproject

  • Initiateur de la discussion michel
  • Date de début
M

michel

Guest
Bonsoir à toutes et à tous

J'ai créé un fichier pour récupérer automatiquement sur une feuille Excel , le contenu de toutes les procédures VBA liées à un classeur cible ( un onglet par type de procédure : module, worksheet ,workbook et userform )

Le fichier fonctionne …sauf …c'était trop beau pour que ça marche du premier coup… , sauf donc si dans le vbaproject , les numéros des Module ,Userform et des Feuil ne se suivent pas de 1 à X .
Par exemple cela ne fonctionne pas si j'ai : Module1,Module3,Module4 ou Feuil2,Feuil3,feuil5 dans le projet ,… et je ne parle pas du cas ou les éléments sont renommés par l'utilisateur

J'ai fait plusieurs essais pour que les boucles soient indépendantes de la numérotation des modules , en essayant de récupérer le nom des module , des userform et des feuil du vbaproject : sans réussite .

Ma question est donc :
Existe il un moyen de lister les noms des Module , userform et Feuil du vbaproject ?


Vous allez me dire : à quoi ça peut bien servir et pourquoi se prendre la tête puisque ça va presque aussi vite en faisant des copier /coller de vba project vers une feuille excel …. et bien ça ne sert à rien , c'est juste pour la beauté du geste …;o)

En fait cette idée saugrenue m'est venue ( …meme mon fichier en est encore bien loin... ) en lisant le post de Maxx , qui souhaitais visualiser la logique de son code et créer un synopsis explicatif
Lien [http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=42897&t=42811]

Bonne soirée
Michel
 

Pièces jointes

  • composants_vba_project.zip
    25.8 KB · Affichages: 41
@

@+Thierry

Guest
Bonjour Michel le Forum


Très très beau geste !! et j'aime bien les trucs comme çà "Just For The Fun"

BOn je n'ai pas le temps de toucher à ton appli, mais j'ai regardé et donc ton problème vient que tu concatenate Module & X etc....... C'est pas catholique of course !! (lol)

Voici une mini Macro qui listera déjà tous les Objects dans une Projet VBE...

Sub ListObjectsInVBE()

Dim VBComp As Object
Dim Msg As String

For Each VBComp In ThisWorkbook.VBProject.VBComponents
Msg = Msg & VBComp.Name & Chr(13)
Next VBComp
MsgBox Msg

End Sub

Par contre c'est quoi tous ces UserForm dans ton Classeur ? Un seul et unique devrait suffir non ?

Enfin je te laisse fignoler ton appli car moi j'en suis à
"USF_Deposit-V01.29.xls 03/08/03 19:30" pour ceux qui suivent (Lien supprimé et j'aimerais finir ceci pour demain...

Mais post nous la version fignolée, ce sera toujours un beau truc Michel

Bon Travail
@+Thierry
 
M

michel

Guest
bonsoir @+Thierry

je te remercie pour tous tes conseils et tes encouragements . Je vais mettre tout ça en application dès que possible

Bonne soirée et bon courage pour ton projet
Michel
 
Y

Yo

Guest
Salut,
A mon avis, ton idée de procedure peut-être très utile.
Imaginons,
Quelqu'un a fait un fichier Excel avec code VBA ...etc. Le code VBA contient le chemin d'accès vers un autre fichier. L'arborescence change. Il faut reparamétrer son code. Dans ce cas, Ton outil peut être fort utile car on peux avoir une vue d'ensemble du code.
Et à vrai dire, ça m'intéresse car je vais bientôt être confronté à ce problème.

J'ai modifié ton code pour la liste des modules du classeur. Celà donne ceci:
Je compte le nb VBComponents
En utilisant Workbooks(fichier).VBProject.VBComponents(l).Name, je récupère le nom.

For l = 1 To Workbooks(fichier).VBProject.VBComponents.Count
If Workbooks(fichier).VBProject.VBComponents(l).Type = 1 Or Workbooks(fichier).VBProject.VBComponents(l).Type = 2 Then
MsgBox Workbooks(fichier).VBProject.VBComponents(l).Name
nbreModules = nbreModules + 1
End If
Next

Ca a l'air de fonctionner.
 
@

@+Thierry

Guest
Salut Yo, re Jean Marie

Yo, en tant que développeur pro j'ai été confronté en permanence à des changement de Serveurs, de Répertoires etc ........

Ouf heureusement que CTRL F existe dans VBE ... et tu peux cocher "Tout le Projet" ....... Pas vraiment besoin de lister les codes pour faire çà... (Dieu soit loué !! lol)

Bonne Soirée
@+Thierry
 
Y

Yo

Guest
L'avantage d'un outil de ce type est que, en le modifiant quelque peu, tu peux "auditer" l'ensemble des fichiers Excel automatiquement ( la nuit par exemple ).
Celà te permet de savoir auparavant l'impact que risque d'avoir des modifications dans l'arborescence d'un serveur de fichiers
 
@

@+Thierry

Guest
Re

Oui oui Yo, tout à fait d'accord avec toi, pour pouvoir faire des stats, et justement lister les codes à toutes fins utiles... (pour ce cas là, mais aussi par exemple pour voir un peu l'état des macros développées par les users... et le cas échéant venir un peu leur donner des conseils !!!)

Donc nous attendons Michel de Pied ferme avec la Version II (lol)

Bonne Soirée à tous... Je viens d'aller me chercher une binouze et un paquet de cloppes pour attaquer la Version 01.31 de mon projet !!

@+Thierry
 
M

michel

Guest
Bonsoir à tous

...voici la nouvelle version ...
@+thierry, encore merci pour ton aide et tes conseils

Maintenant toutes les procédures s'affichent dans un même onglet ...il n'y a plus qu'un seul userform dans le projet..;o)...et la taille du fichier en est divisé par 2

je ne pensais pas que ce sujet pourrais interesser autant de monde . je vais lire tous ces messages avec attention


Bonne soirée et merci
Michel
 

Pièces jointes

  • composants_vba_project_v03.zip
    15.5 KB · Affichages: 49
  • composants_vba_project_v03.zip
    15.5 KB · Affichages: 37
  • composants_vba_project_v03.zip
    15.5 KB · Affichages: 44
L

LaurentTBT

Guest
Bonsoir Michel, Thierry, Yo et les autres.

Et oui, Michel, tu as trouvé là un sujet particulièrement interessant. Je me suis lancé dessus depuis ton premier post. Bon, OK, je ne suis pas très rapide. Mais j'ai finalement repris ta version initiale, avec plusieurs onglets.
D'accord, je n'apporte rien de plus que toi, mais je post quand même mon fichier, histoire de ne pas avoir bossé pour rien (il y a au moins eu le fun!).

J'aimerais bien maintenant, au sein d'un module, faire la distinction entre les différentes procédures, en mettant par exemple la première ligne en vert, et en sautant une ligne entre chaque. Je vois bien une solution: detecter tous les "end sub" ou "end function", mais ça ne me semble pas très catholique. Enfin, je verrai ça plus tard.

Bonne soirée à tous.
 

Pièces jointes

  • ListingVbaLaurentTBT.zip
    22.7 KB · Affichages: 54
M

michel

Guest
Bonjour LaurentTBT , YO , @+Thierry

Laurent , Yo , Merci pour vos suggestions , qui correspondent à ce que j'ai vainement essayé de faire Dimanche .
Entre temps , @+Thierry m'a donné une solution pour lister le nom des éléments . cela m'a permis de terminer la nouvelle version du fichier : composants vba project V03 (voir post plus haut ).

Encore merci pour votre aide . Vos remarques et critiques sur cette nouvelle version sont les bien venues

bonne journée
Michel
 

Discussions similaires

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