Exporter une sub sur la page de code Workbook

quentinou -  
 quentinou -
Bonjour,

VBAmateur depuis 2 semaines, j'aurais une petite question pour laquelle je n'ai pas trouvé de réponse en parcourant les forums.

Je crée un petit programme de gestion de stock sur Excel 2007, mon classeur principal gestock.xlsm peut afficher un formulaire qui va créer une fiche produit : il ouvre un classeur que le nomme par le nom du produit, ex : FILTRE.xlsx.
J'ai fait en sorte qu'à chaque fiche produit créée, les modules qui m'intéressent y soient importés, mais il y a une procédure qui doit s'enclencher à la fermeture de la fiche produit.

La seule solution que j'ai trouvé est de l'écrire sur la feuille de code associée au Workbook et de commencer par

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Ma procédure etc...

End Sub

Le problème est que je n'arrive pas à importer cette procédure et à la coller sur la page Workbook, j'ai essayé de l'importer en tant que module en créant un fichier .bas mais elle ne démarre pas à la fermeture de la fiche produit, auriez vous une solution?

Soit pour coller la procédure sur le workbook soit pour faire en sorte qu'un module déclenche la procédure à la fermeture du classeur.

Je vous remercie d'avance.

Quentinou (un peu perdu...)
A voir également:

4 réponses

ben13.51 Messages postés 115 Statut Membre 7
 
Dans VBA
tu à une branche ThisWorbook dans l'explorateur de projet (à gauche)
Tu double clic dessus et tu as une page de code vierge qui apparait
en haut de cette page tu as une liste déroulante où "Général est sélectionné par défaut
clic dessus et sélectionne Workbook
Normalement tout ce que tu écrit la dessus s'applique au classeur...
0
quentinou
 
Salut,

Et merci pour ta réponse. J'ai essayé ton astuce cependant pour l'appliquer, lorsque je crée un nouveau classeur je dois aller dans la page vba ThisWorkbook associé au classeur pour sélectionner Workbook, mais j'aimerais que cela se fasse automatiquement, que ma procédure qui s'active normalement à la fermeture du classeur soit collée sur la page ThisWorkBook de chaque nouveau classeur crée.

Tout comme pour importer des modules je les enregistre dans un dossier sous la forme de fichiers .bas, je voulais en faire de même pour la page ThisWorkbook et on me propose de l'enregistrer en .cls.

Ensuite pour importer j'inscris le code :

Dim WKBK as string
WKBK="C:\MesMacros\ThisWorkbook.cls
With Workbboks(MonClasseur.xlsx)
.VBComponents.Import WKBK
End With

Ce code marche parfaitement pour les modules mais pas pour importer le code enregistré sur la page ThisWorkbook.
0
ben13.51 Messages postés 115 Statut Membre 7
 
J'ai un peu regardé mais là je t'avoue que je sèche un peu...
je ne sais pas comment importer automatiquement du code sur la page thisworbook
Celà dit si tu crée un classeur excel vierge avec juste le code qui t'intéresse écrit dans la page de code thisworbook
Tu enregistre ce classeur en tant que modèle (.xlt) (tu fais enregistrer sous et dans la liste déroulante en bas tu peux choisir "Modèle") et tu écrit ton code de manière à ce que chaque classeur créé automatiquement s'ouvre suivant ton modèle... ça peut marcher. En tout cas j'ai éssayé, le code dans thisworbook s'applique bien au nouveau document créé suivant le modèle...

Voilà un code généré en automatique pour créer un classeur suivant un modèle:

Workbooks.Add Template:= _
"C:\Documents and Settings\proprietaire\Application Data\Microsoft\Templates\Classeur3.xlt"
0
quentinou
 
Youpi, j'ai enfin trouvé!!

Si jamais cela peut servir à quelqu'un voici ce que j'ai rentré :
WithWorkbooks("MonClasseur.xlsx").VBProject.VBComponents("ThisWorkbook").CodeModule
X=.CountOfLines
.InsertLines X+1, "Private Sub Workbook_BeforeClose...."
.InsertLines X+2, "Dim i as integer..."
...etc mon code ligne par ligne
.InsertLines X+N, "End Sub"

Voila merci pour tes réponses.
0