Copier code vba dans un nouveau doc

john

XLDnaute Impliqué
Bonjour,

Est-il possible de copier le code VBA dans un autre document et ce, en VBA ?
Je m'explique, j'ai un modèle de document (.dot), quand je double clic dessus, j'obtient un nouveau document, mais les macros du modèle ne suivent pas dans ce nouveau document, donc si j'utilise ce doc sur un autre ordinateur qui lui ne possède pas le modèle, le programme ne fonctionnera pas.

Voilà pourquoi j'aimerai que les macros du modèle soient recopiées dans le nouveau document automatiquement lors de la création de celui-ci.

Je vous remercie d'avance pour votre aide.

Bonne journée à tous.

John
 

john

XLDnaute Impliqué
Re : Copier code vba dans un nouveau doc

Re,

Pour ceux que ça intéresse, voici le code pour créer un module via le code VBA (ici Module1)

Set NewModule = ActiveDocument.VBProject.VBComponents.Add(vbext_ct_StdModule) 'création du module vide
NewModule.Name = "Module1" 'ici je lui donne le nom module1 mais à savoir que c'est le nom donné par défaut lors de sa création, mais ainsi vous savez que vous pouvez le renommer avec cette commande.
With ActiveDocument.VBProject.VBComponents("Module1").CodeModule 'ici ne pas oublier de changer le nom (Module1) au cas où vous renommer le module à la ligne précédente.
x = .CountOfLines 'comptage du nombre de lignes exisante dans le module nommé ci-dessus
.InsertLines x + 1, "Sub test_macro()" 'insertion de la première ligne à x +1
.InsertLines x + 2, "MsgBox ""coucou"", vbInformation + vbOKOnly, ""test"""
.InsertLines x + 3, "End Sub"
End With

A savoir qu'il faut activer la référence "Microsoft Visual Basic for Applications Extensibility" pour que ça marche !!!!

Voilà j'espère que ça pourra aider quelqu'un, en tout cas moi ça m'a aidé.

Bonne journée à tous.
 
Dernière édition:

john

XLDnaute Impliqué
Re : Copier code vba dans un nouveau doc

Bonjour,

Je reviens sur mon code ci-dessus...
Maintenant j'aimerai savoir si quelqu'un peut me dire si il y a moyen de lire les modules existant (d'un modèle de document (.dot)) et ce qu'ils contiennent (toutes les lignes) et de les recopiers à l'identique vers le classeur actif !!

Je vous remerci d'avance

John
 

john

XLDnaute Impliqué
Re : Copier code vba dans un nouveau doc

Bon voilà, je viens de trouver comment lister tous les modules d'un document (word et/ou excel).
Voici le code au cas où ça vous intéresserai :

Sub listeMacros()
'Nécéssite d'activer la référence
'"Visual basic For Application Extensibility 5.3"
'
Dim i As Integer, Ajout As Integer, x As Integer
Dim Msg As String
Dim VBCmp As VBComponent
Dim Wb As Document
'Dim Wb As Workbook ' pour excel !!!!

'Indiquez le nom du classeur ouvert
'Set Wb = ThisWorkbook pour excel
Set Wb = ActiveDocument

For Each VBCmp In Wb.VBProject.VBComponents
Msg = VBCmp.Name

x = Wb.VBProject.VBComponents(Msg).CodeModule.CountOfLines
For i = 1 To x
MsgBox Wb.VBProject.VBComponents(Msg).CodeModule.Lines(i, 1)
Next
Next VBCmp
End Sub

Il suffit de combiner mon script du premier post (voir ci-dessus et l'adapter bien-sur) et celui ci (dans la boucle à la place du msgbox) et le tour est joué.

Bonne journée à tous.

John
 

Discussions similaires

Statistiques des forums

Discussions
312 845
Messages
2 092 764
Membres
105 529
dernier inscrit
StarExcel