Bonjour
Je suis en train de créer un programme en VBA EXCEL pour "obfusquer" le code d'un autre classeur (assez "précieux" : près d'un an de travail, 7 j / 7 à raison de 14 à 17 h / jour).
Pour simplifier, j'exporte par programme tous les modules de mon classeur à obfusquer et je les recopie dans des onglets Excel.
J'analyse ensuite le tout pour identifier les variables, les constantes, les textes entre doubles-guillemets, les commentaires, les types, les fonctions, les procédures, mais aussi les différents "objets" dans les UserForms ("controls") et les feuilles de calcul ("shapes" et "objets OLE").
Je crée enfin autant de nouveaux noms "illisibles" qu'il se doit et j'applique ces nouveaux noms au contenu de chacun de mes onglets.
Pour terminer, je ré-importe le tout dans le classeur que je souhaite obfusquer.
Je croyais être arrivé au bout de ma peine, mais je suis bloqué quand je veux renommer les "controls" des Userforms ainsi que les "shapes" et autres objets OLE de mon classeur à obfusquer.
Ma syntaxe est bonne (les instructions marchent en mode "arrêt") mais dès que je passe en mode exécution, je me retrouve avec le message suivant (notamment quand je veux modifier le nom d'un "control" d'un UserForm) :
"-2147319767 Impossible de définir la propriété Name. Référence future non valide, ou référence à un type non compilé."
Je ne trouve aucune référence à cette erreur sur Google.
Quand ça se plante, je ne peux pas entrer en mode "debug" (j'ai donc fait plein de "print" de traces...) du fait que le code de mon autre classeur est en cours de transformation et donc forcément plein d'anomalies.
J'ai désactivé la compilation automatique et le contrôle de syntaxe à la saisie. Ca ne change rien.
J'ai également essayé de mettre mon "classeur à obfusquer" dans un emplacement non approuvé, en vain.
Est-ce quelqu'un aurait une piste ?
Je ne crois pas que mettre ici une copie de mon code servirait à grand chose : j'ai l'impression que mon problème est de pouvoir manipuler par programme le code VBA d'un autre classeur et que celui-ci reste "passif" (qu'il n'essaye pas de se recompiler au fil de l'eau, que ses évènements ne se déclenchent pas, etc.).
Un grand merci d'avance pour vos réponses
Gilbert
Partager