Créer 1 nouveau classeur contenant 1 macro

Johann RSW

XLDnaute Nouveau
Bonjour à tous,

Je checher à faire 1 copie d'un classeur qui contiendra 1 macro (via le VBA).

J'arrive bien générer ma copie de classeur mais pas à y incorporer 1 macro ou 1 module !

Quelqu'1 voit-il 1 solution ?

Merci.

Johann.
 

JYLL

Nous a quitté
Repose en paix
Re : Créer 1 nouveau classeur contenant 1 macro

Bonsoir Johann RSW et le Forum,

Tu peux toujours copier ton classeur contenant sous un nouveau nom. autrement dans VB, il faut cliquer sur le module et l'exporter et dans le nouveau classeur tu l'importeras. Ou plus simple tu ouvre ton nouveau classeur, tu crées un modole tu sélectionne ta macro tu ppaauies sur la touche "Ctrl" + la touche "C" pour copier tu vas dans ton nouveau Module et tu fais "Ctrl" + "V" et la macro sera copiée.

Bon test.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Créer 1 nouveau classeur contenant 1 macro

Bonsoir johann, JYLL, re le forum,

Soit j'ai pas tout compris, soit j'ai pas tout compris :D

Lorsqu'un classeur est accompagné de macro(s) et que l'on recopie, tout est recopier... classeur et macro(s) compris...

Johann, peux-tu préciser ton problème stp ?

En attendant, bonne soirée vous tous.

Jean-Pierre
 

Johann RSW

XLDnaute Nouveau
Re : Créer 1 nouveau classeur contenant 1 macro

Bonjour Jean-Pierre,

Effectivement tu as relevé 1 subtilité.
Je ne fais pas 1 "vrai" copie : je ne recopie que les feuilles qui m'intérèsse, puis je fais enregistrer sous.
Et c'est à cemoment là dans ce nouveau classeur que je n'arrive pas à faire suivre 1 macro...

En attendant tes commentaires, bye bye.
Johann.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Créer 1 nouveau classeur contenant 1 macro

Bonjour Johann, le forum,

Pour te répondre à MP, non, je n'avais pas vu ta réponse, car je suis au boulot et pas ou peu de temps.

Sinon, pour rester dans le même esprit que la réponse de JYLL, dans VBE, tes deux classeurs ouverts, tu selectionnes ton module dans le premier et tu le glisses sur le second. Plus rapide qu'un export et un import.

Est-ce cela que tu voulais.

Bonne journée.

Jean-Pierre
 

Johann RSW

XLDnaute Nouveau
Re : Créer 1 nouveau classeur contenant 1 macro

Merci à toi Jean-pierre de prendre 1 peu de ton temps pour les autres.
Non ce n'est pas vraimment ce que je voulais, pourquoi : car je veux que cette manip se fasse en automatique, avec du code VBA et non en manuel (que j'arrive à faire par ailleur).
=> comment copier 1 module ou 1 macro dans 1 nouveau classeur via 1 code VBA ?
Balaise ?!
Merci au forum.
Johann.
 

MichelXld

XLDnaute Barbatruc
Re : Créer 1 nouveau classeur contenant 1 macro

bonjour à vous

J'espère que cet exemple pourra t'aider

Code:
Dim Wb As Workbook
Dim VBComp As vbcomponent
Dim Debut As Integer, Fin As Integer, i As Integer
Dim X As Integer
 
'Creation classeur
Set Wb = Workbooks.Add
 
'Creation d'un module standard dans le nouveau classeur
Set VBComp = Wb.VBProject.VBComponents.Add(1)
 
With Wb.VBProject.VBComponents(VBComp.Name).CodeModule
    X = .CountOfLines
End With
 
'Copie dans le nouveau module, la procédure nommée "ControleSiOutlookOuvert" 
'qui est dans le module1 du classeur contenant cette macro.
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
    Debut = .ProcStartLine("ControleSiOutlookOuvert", vbext_pk_Proc)
    Fin = .ProcCountLines("ControleSiOutlookOuvert", vbext_pk_Proc) + Debut
 
    For i = Debut To Fin
        'Ajout de la procédure
        With Wb.VBProject.VBComponents(VBComp.Name).CodeModule
            X = X + 1
            .InsertLines X + 1, _
                ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(i, 1)
        End With
    Next i
End With


Bonne soirée
MichelXld
 
Dernière édition:

Johann RSW

XLDnaute Nouveau
Re : Créer 1 nouveau classeur contenant 1 macro

Re bonjour,

Eh oui malheureusement me revoilà : après avoir débloqué l'erreur de compilation "type non défini" sur la ligne "Dim VBComp As vbcomponent" pour laquelle j'ai défini la référence "Microsoft Visual Basic for Applications Extensibility 5.3"
Voici une autre erreur d'exécution 1004 (l'accès au programme au projet visuel basic n'est fiable) sur la ligne "Set VBComp = Wb.VBProject.VBComponents.Add(1)" => je ne vois pas pourquoi il bloque là !?
Est-ce 1 problème de niveau de sécurité VBA ?
Merci à vous de m'aider !
Johann.
 

Johann RSW

XLDnaute Nouveau
Re : Créer via VBA 1 Module dans 1 autre classeur ouvert

Bonjour à Tous,

Voilà la macro suivante a répondu pendant un temps à mes besoins, mais maintenant il faudrait que l'ajout d'un module se fasse non pas dans 1 nouveau classeur mais dans 1 classeur "Yoyo.xls" qui est déjà ouvert.
Mon problème c'est que je n'arrive pas à "redéfinir correctement" le "Wb = ..."

Par avance merci de votre aide.

@+ Johann

Sub Copiage_Macro_Dans_New_Classeur()

Dim Wb As Workbook
Dim VBComp As vbcomponent
Dim Debut As Integer, Fin As Integer, i As Integer
Dim X As Integer

'Creation classeur
Set Wb = Workbooks.Add
'Creation d'un module standard dans le nouveau classeur
Set VBComp = Wb.VBProject.VBComponents.Add(1)

With Wb.VBProject.VBComponents(VBComp.Name).CodeModule
X = .CountOfLines
End With

'Copie dans le nouveau module, la procédure nommée "Macro_A_Copier"
'qui est dans le module1 du classeur contenant cette macro.
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
Debut = .ProcStartLine("Macro_A_Copier", vbext_pk_Proc)
Fin = .ProcCountLines("Macro_A_Copier", vbext_pk_Proc) + Debut

For i = Debut To Fin
'Ajout de la procédure
With Wb.VBProject.VBComponents(VBComp.Name).CodeModule
X = X + 1
.InsertLines X + 1, _
ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(i, 1)
End With
Next i
End With

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 073
Membres
104 018
dernier inscrit
Mzghal