bonjour à tous,
C'est ici que j'ai trouvé il y a 2 ans comment exporter et importer des objets VBA pour mettre à jour les sources d'un Classeur pour un utilisateur.
Depuis j'ai trouvé quelques astuces à savoir, je vous fais part ->
http://www.developpez.net/forums/d98...s/#post7177716
J'ajoute qu'on n'est pas obligés, à l'export, de faire comme Excel et de donner l'extension "cls" et pour les modules de classe (code = 2) et pour les feuilles Excel (code = 100). Pour les feuilles il vaut mieux mettre "sht" (comme sheet) par exemple. Ceci a l'avantage de pouvoir faire la différence entre ces 2 objets lors de l'import.
Cette différence est utile si on se propose de faire un Export/Import de toutes les sources d'un classeur, car un module de classe peut être traité à l'import avec .Remove/.Import, tandis que pour les feuilles, qui contiennent et des données (qu'on veut pas toucher lors de l'import) et du code (qu'on veut mettre à jour), on doit passer par .CodeModule.
Avec .CodeModule on peut effacer tout le code attaché à la feuille
1 2
| Set VBComp = ThisWorkbook.VBProject.VBComponents(Nom)
VBComp.CodeModule.DeleteLines 1, VBComp.CodeModule.CountOfLines |
et le remplacer avec le code contenu dans le fichier de l'export (*.sht, justement)
VBComp.CodeModule.AddFromFile ("Sheet1.sht")
Dernier détail, essentiel: afin que .CodeModule.AddFromFile ("Sheet1.sht") marche il faut d'abord éliminer de ce fichier les lignes en début de fichier:
1 2 3 4 5
| VERSION ....
BEGIN
...
...
END |
a+

Partager