Déplacer une macro par macro

sunguess

XLDnaute Junior
Bonjour,

J'ai une petite macro "macrotest" enregistrée dans le module 1 de classeur1.xls

Je souhaiterais créer une macro qui déplace "macrotest" dans le fichier excel classeur2.xls afin que ce fichier soit autonome

Est ce possible ? comment faire ?

D'avance merci
 

Pierrot93

XLDnaute Barbatruc
Re : Déplacer une macro par macro

Bonjour,

pourquoi une macro ? dans l'éditeur vba => fenêtre "vba project" => tu fais glisser le module 1 du classeur 1 vers le classeur 2, il seerai ainsi copié... A noter que tu peux également faire des imports et exports avec les module...

bon après midi
@+
 

sunguess

XLDnaute Junior
Re : Déplacer une macro par macro

Pourquoi une macro ?

Parce que c'est un traitement parmi tant d'autre.

J'ai une une grosse macro que lance des utilisateurs pour mettre en forme un classeur et j'ai besoin de macro dans ce classeur.
 

Pierrot93

XLDnaute Barbatruc
Re : Déplacer une macro par macro

Re,

essaye ceci alors, déplace le module dans sa totalité .. "faire confiance au projet visual basic" doit être coché dans les options de sécurité :

Code:
Option Explicit
Sub test()
Dim f As String
f = ThisWorkbook.Path & "\test.bas"
Workbooks("Classeur1.xls").VBProject.VBComponents("Module1").Export f
Workbooks("Classeur2.xls").VBProject.VBComponents.Import f
Kill f
End Sub
 

sunguess

XLDnaute Junior
Re : Déplacer une macro par macro

merci de ton aide.

la macro plante sur : Workbooks("MiseEnForme2.xlsm").VBProject.VBComponents("Module3").Export f

j'ai copié le code suivant
Code:
Sub transfert()
Dim f As String
f = ThisWorkbook.Path & "\transfert.bas"
Workbooks("MiseEnForme2.xlsm").VBProject.VBComponents("Module3").Export f
Workbooks("results.xlsm").VBProject.VBComponents.Import f
Kill f
End Sub

MiseEnForme2.xlsm étant le classeur avec la macro de mise en forme
results.xlsm étant le fichier mis en forme
 

sunguess

XLDnaute Junior
Re : Déplacer une macro par macro

j'ai trouvé une solution :

Code:
Sub CopyModule(SourceWB As Workbook, strModuleName As String, _
    TargetWB As Workbook)
' copies a module from one workbook to another
' example:
' CopyModule Workbooks("Book1.xls"), "ModuleSchemas", _
    Workbooks("Book2.xls")
Dim strFolder As String, strTempFile As String
    strFolder = SourceWB.Path
    If Len(strFolder) = 0 Then strFolder = CurDir
    strFolder = strFolder & "\"
    strTempFile = strFolder & "~tmpexport.bas"
    On Error Resume Next
    SourceWB.VBProject.VBComponents(strModuleName).Export strTempFile
    TargetWB.VBProject.VBComponents.Import strTempFile
    Kill strTempFile
    On Error GoTo 0
End Sub
 

Discussions similaires

Réponses
16
Affichages
540
Réponses
4
Affichages
201

Membres actuellement en ligne

Statistiques des forums

Discussions
312 329
Messages
2 087 335
Membres
103 520
dernier inscrit
Azise