J'y ai trouvé ce qui devait faire mon bonheur : Un code qui me permet à la fermeture de mon fichier Excel, de supprimer tous les modules et toutes les procédures (pour simplifier : j'ai un fichier Excel appli, une fois tous les traitements effectués, je l'enregistre sous un autre nom, je remplace toutes les formules par les données brutes pour réduire la taille du fichier, et je voudrais supprimer toute trace de code pour éviter qu'à l'ouverture, mon utilisateur ait le message d'activation des macros, sans compter qu'elles sont devenues complètement inutiles).
J'ai donc activé dans mon code VBA la référence :
Visual basic For Application Extensibility 5.3
Et j'ai repris le code suivant :
Sub SupprimeTout()
'Enregistre le classeur et supprime la totalité des procéduresDim VbComp As VBComponent
ForEach VbComp In ThisWorkbook.VBProject.VBComponents
SelectCase VbComp.Type
Case 1 To 3
ThisWorkbook.VBProject.VBComponents.Remove VbComp
CaseElseWith VbComp.CodeModule
.DeleteLines 1, .CountOfLines
EndWithEndSelectNext VbComp
'Sauvegarde les modifications
ThisWorkbook.Save
EndSub
Ca plante dès le début de la procédure, sur la ligne
ForEach VbComp In ThisWorkbook.VBProject.VBComponents
avec le message d'erreur suivant :
"L'accès par programme au projet Visual Basic n'est pas fiable" et donc, ma procédure s'arrête.
Je ne vois pas du tout d'où ça peut venir, sans doute un paramètre de sécurité, mais là je sèche.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 13 févr. 2007 à 18:22
J'ai fini par trouver, c'était bien un paramètre de sécurité, mais il ne fallait pas le chercher dans l'éditeur VB. C'était directement dans le fichier Excel en fait (menu Outils\Macros\Sécurité dans l'onglet Source fiable, il fallait cocher Faire confiance au projet Visual Basic).