[Déplacé .Net --> VBA] analyser une macro

Résolu
jepasderemy Messages postés 11 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 11 octobre 2009 - 8 sept. 2009 à 11:26
jepasderemy Messages postés 11 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 11 octobre 2009 - 10 sept. 2009 à 13:00
Bonjour,

Existe-t-il un moyen d'analyser le fonctionnement d'une macro ?

Je m'explique : j'ai un classeur qui contient beaucoup de macros (modules, fonctions, procédures), qui en appelent d'autres.
Seulement j'ai un problème lors de l'exécution. En effet la compréhension de la macro est difficile parceque lors de l'execution, ça n'arrête pas de passer d'un module à un autre et d'appeler des fonctions à l'intérieur d'autres fonctions, etc.

Y a-t-il un moyen de voir sur un seul fichier tout ce que VB réalise lorsque les macros sont lues ?

Merci,

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 sept. 2009 à 11:51
Salut
Si le programme passe d'une procédure à une autre, c'est qu'il est bien conçu : En effet, à chaque fois que tu as une action à faire, les règles de l'art disent qu'il faut externaliser cette fonction car elle pourra être appeler plus tard, par d'autres procédures + cela fait des procédures pas trop longues, faciles à analyser.
Normalement, le nom de ces procédures doit décrire l'action/la fonction qui est exécutée à l'intérieur. L'anglais est d'ailleurs plus pratique pour ces noms.

Es-tu familier des notions de Sub et Function ? de Private et Public ?
Ce sont de bonnes indications pour imaginer ce que la procédure fait.

Côté outil, je te précaunise MzTools pour VBA (le VB de Excel/Word) : c'est gratuit.
Cet outil permet, parmi ces multiples fonctions, de savoir quelle autre procédure appelle la procédure dans laquelle tu es actuellement : très pratique.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
jepasderemy Messages postés 11 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 11 octobre 2009
8 sept. 2009 à 14:25
Je suis bien d'accord pour l'externalisation, mais là je trouve que c'est un peu à l'extrême. J'ai des fonctions qui incrémente de 1, des fonctions pour changer le nom, pour faire un "if".
Le problème de mon fichier est que les variables ont des noms de fonctions et de variables peut équivoques(Fl, l, a, etc) sur 2500 lignes de codes et pas, ou presque, de commentaires.
Est-ce qu'il y a un moyen de voir la compilation du programme ?(en gros voir toutes les commandes qui vont s'éxecuter sur une même page)

Je ne connaissais pas MzTools, je pense que ça va bien m'aider, surtout la génération de documentation XML.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 sept. 2009 à 15:18
Pas bien compris ton histoire de compilation et de page ... mais non, la partie compilation est interne à Excel.
Commence par donner des noms parlant à tes variables (*) et tes fonctions. Ca aide beaucoup à y voir clair.
Grace à MzTools, il te suffit de placer ton cuirseur dans une procédure et de cliquer sur une icone pour voir la liste des autres procédures qui l'appellent : ça, ça aide des fois à comprendre la structure.
(*) Variables : La limite de longueur du nom d'une variable est grande (plus le chiffre en tête, je crois 256 car) : Tant qu'à faire, pense à mettre en tête le type de variable : i ou int pour Integer, l ou lng pour Long, s ou str pour String, a ou arr pour Array, etc, mais tu mets ce que tu veux, du moment que du premier coup d'oeil tu sais de quel type est cette variable et surtout ce qu'elle est sensée renfermer.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 sept. 2009 à 15:21
Premiers boulots aussi :
Ajouter un "Option Explicit" en tête de chaque page de code et relancer l'appli jusqu'à ce que tout remarche.
Cette option oblige à déclarer les variables. C'est chiant à faire, mais ça aide beaucoup à comprendre si cette variable intéresse tout le projet ou seulement le module ou la procédure en cours + d'être sûr du type de la variable.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jepasderemy Messages postés 11 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 11 octobre 2009
8 sept. 2009 à 15:22
En fait il semble que tout a été rédigé par une sorte de CMS pour VBA (ça existe ça ?).

J'ai l'impression que le programmeur s'est bien pris la tête. Pour obtenir le nom du classeur actuel, je passe par 8 fonctions différentes...
Je suis en train de supprimer les procédures ou fonctions qui ne sont appelées qu'une seule fois, après je vais renommer chaque variable.

Merci du conseil
0
jepasderemy Messages postés 11 Date d'inscription lundi 6 juillet 2009 Statut Membre Dernière intervention 11 octobre 2009
10 sept. 2009 à 13:00
Ce que je voulais savoir c'est si le code est :

sub macro1()
a=1
call macro2
call macro3
end sub
sub macro2()
a=a+1
call macro3
end sub
sub macro3()
a=a+2
end sub

Comment obtenir quelque chose qui donnerait :
Execution du programme :
a=1
a=a+1
a=a+2
a=a+2
0
Rejoignez-nous