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

Résolu
Signaler
Messages postés
16
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
28 novembre 2014
-
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
-
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

Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

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
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
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
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Bonjour ,
mimizanzan ,
Ton code est interessant.
Cela fait un certain temps que je cherchais
ce type exemple.
Merci

Dedenet2