Comment créer une macro sous XL... depuis une macro !

Résolu
rockerfou Messages postés 16 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 28 novembre 2014 - 27 août 2009 à 10:26
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 - 29 août 2009 à 12:56
Bonjour à tous,

Je suis en train d'écrire une application VBA sous XL mais je coince.

Il faudrait que j'insère une macro (plus exactement dans la partie "Private Sub Worksheet_beforeDoubleClick")dans une feuille qui est créée automatiquement par ma macro principale. Comment faire ???
En résumé je cherche à créer une macro qui crée une macro !
Est-ce possible

3 réponses

mimiZanzan Messages postés 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 décembre 2017
28 août 2009 à 00:26
Salut rockerfou,

Ce que tu veux est très possible, à condition d'ajouter la référence suivante au VBA:
"Microsoft Visual Basic for applications Extensibility 5.3"
(avec le menu Outils/Références)
Puis voici le code à mettre dans un module

Sub EcritMacro() 'écrit une macro dans la procédure Worksheet_BeforeDoubleClick de la feuille "New"
Dim d As VBComponent, l As Integer
'ajoute une feuille à la suite de "Feuil1" (par ex) et la nomme "New" (par ex)
Sheets.Add after:=Sheets("Feuil1")
ActiveSheet.Name = "New"
'affecter la variable au code module de la feuille "New"
Set d = ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Worksheets("New").CodeName)
'ajouter la procédure d'évènement souhaitée (ici Worksheet_BeforeDoubleClick)
'ceci renvoie le n° de ligne de la procédure
l = d.CodeModule.CreateEventProc("BeforeDoubleClick", "Worksheet")
'insérer le code que l'on veut dans la procédure créée, avec des sauts de ligne (vbcr) si besoin
d.CodeModule.InsertLines l + 1, "Dim Cel as Range" & vbCr & "Set Cel=sheets(""New"").range(""B2"")" & vbCr & _
"Cel.value=10"
End Sub

Je viens d'essayer ceci, et çà marche!
Bien sûr, le code que j'ai inséré n'est qu'un exemple. Tu mets ce que tu veux.

A toi de jouer.

mimizanzan
3
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
27 août 2009 à 20:28
Bonjour ,
On doit pouvoir creer les codes en automatique
mais je ne sais encore comment faire.

Pour ton problème de feuille avec code integrée
Peut être faut il créer une feuille modele
qui serait masquée avec un code dans l'evenement "Private Worksheet_beforeDoubleClick")puis faire
une copie de celle-ci lorsque tu voudras inserer
une nouvelle feuille ?

A voir si c'est possible !

Dedenet2
0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
29 août 2009 à 12:56
Bonjour ,
mimizanzan ,
Ton code est interessant.
Cela fait un certain temps que je cherchais
ce type exemple.
Merci

Dedenet2
0
Rejoignez-nous