VB dans Excel : code qui génère un code

irwiner Messages postés 5 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 26 avril 2012 - 6 sept. 2006 à 10:15
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 6 sept. 2006 à 23:46
Bonjour à tous,
J'aurais voulu savoir s'il était possible avec VB dans Excel d'écrire un code qui génère lui même un code. Pour être plus précis, j'aimerai que ma macro génère un nouveau classeur, crée un bouton et écrive le code à appliquer quand on appuie sur le bouton. Il faudra bien sûr que le code se trouve sur ce nouveau classeur. Le but n'est pas d'avoir le code tout prêt sur le fichier d'origine et de faire appel à ce dernier car il y aura des modifications à faire en fonctions de paramètres propre à chaque fichier généré.

Si c'est possible comment faire et quelles fonctions utiliser?

Merci d'avance

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
6 sept. 2006 à 10:20
Salut,

il faut voir la bibliothèque VBIDE, puis l'objet vbcomponents (de VBAProject) et la syntaxe CodeModule.InsertLine

++
0
irwiner Messages postés 5 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 26 avril 2012
6 sept. 2006 à 10:52
Est-ce qu'il est possible d'avoir un exemple d'utilisation de la bibliothèque
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
6 sept. 2006 à 10:54
Salut,


Un petit exemple pour illustrer les propos de 647037 mortalino (salut)

Il faut ajouter la référence Microsoft Visual Basic For Application Extensibility 5.3 (ou équivalent)

Le code suivant :
- Creer un nouveau classeur depuis Excel
- Creer un Bouton nommer CommandButton1 dans la feuille Feuil1 du nouveau classeur
- insere dans le code de Feuil1 la procedure relative au nouveau bouton




'Nouvel objet Classeur


Dim Wb As Workbook 
'Code du bouton
Dim BoutonCode As String 

'Ouvre un nouveau classeur et l'affet a WB
Set Wb  = Application.Workbooks.Add 

'Ajoute un Bouton dans la feuil1 (Worksheets(1))
Wb.Worksheets(1).OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ 
        , DisplayAsIcon:=False, Left:=81, Top:=60, Width:=85.5, Height:=22.5) _ 
        .Select 

'Code du bouton
BoutonCode = "Private Sub CommandButton1_Click()" & vbCrLf & _ 
             "'Ajouter le code a executer" & vbCrLf & _ 
             "End Sub" 
'Insere la procedure du bouton dans le code de Feuil1
Call Wb.VBProject.VBComponents("Feuil1").CodeModule.InsertLines(1, BoutonCode) 

'Sauvegarde le nouveau classeur
Call Wb.SaveAs("C:\TestBouton.xls") 
'Fermeture du classeur
Call Wb.Close 
'Destruction de l'objet
Set Wb = Nothing 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       









@+,   Ju£i?n
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
6 sept. 2006 à 11:01
Salut Julien,

merci d'avoir complété (bizarrement, je ne reçois pas les alertes mails...)

@++ et certainement qu'on se recroisera ;)

irwiner : j'ai une source qui traite les objets composants d'un projet, par contre je ne gère que la suppression de code ou composants (au cas où ça t'interesserai..)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gnieark Messages postés 53 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 22 octobre 2010
6 sept. 2006 à 23:35
^^ Pour savoir, est-ce que c'est à peu près pareil avec word? (pour pour que VB6 aille modifier une macro word?)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
6 sept. 2006 à 23:46
Oui,

il faut tourner autour de VBAProject et ses composants (vbcomponents).
La librairie Microsoft Visual Basic For Application Extensibility 5.3 est la même en word et excel, et utilisable par vb6.

Je ne touche pas vraiment le code dans ma source (juste des suppressions ou comptage de ligne) mais regarde ma source, bien qu'elle traite les classeurs excel, elle est facilement adaptable pour les documents word.

Une fois que tu as chargé la bibliothèque vbide (avec la librairie VBA extensibility), pense à faire F2 (explorateur d'objets) et recherche CodeModule. Tu auras les méthodes et propriétés.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous