OVH Cloud OVH Cloud

créer un classeur,y écrire par macro des instructions et les exécuter

3 réponses
Avatar
Misange
Coucou,

J'ai un classeur maitre contenant des modèles de feuilles pour
différents usages. Ce n'est pas un xlt mais un xls.

Par macro, je lance la création d'un nouveau classeur contenant une de
ces feuilles :
Sheets("machin").Copy
Je veux mettre dans le ThisWorkbook de ce nouveau classeur des
instructions contenues dans le module "exporter" du classeur maitre :

Dim NewM As Object, NewCode As String
With ThisWorkbook.VBProject.VBComponents("exporter").CodeModule
NewCode = .Lines(1, .CountOfLines)
End With
With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString NewCode
End With

Ca marche presque impec : le classeur est bien créé avec la feuille et
le contenu du module "exporter" est bien recopié dans le thisworkbook
mais comme il n'y a pas d'événement d'ouverture de ce nouveau classeur,
les macros de thisworkbook ne sont pas exécutées.
Comment faire ?
many thanks

--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

3 réponses

Avatar
Misange
oups ! c'est tout bon ! suffit de rajouter
Application.Run "'maitre.xls'!mamacro"

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 26/02/2005 11:32, :
Coucou,

J'ai un classeur maitre contenant des modèles de feuilles pour
différents usages. Ce n'est pas un xlt mais un xls.

Par macro, je lance la création d'un nouveau classeur contenant une de
ces feuilles :
Sheets("machin").Copy
Je veux mettre dans le ThisWorkbook de ce nouveau classeur des
instructions contenues dans le module "exporter" du classeur maitre :

Dim NewM As Object, NewCode As String
With ThisWorkbook.VBProject.VBComponents("exporter").CodeModule
NewCode = .Lines(1, .CountOfLines)
End With
With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString NewCode
End With

Ca marche presque impec : le classeur est bien créé avec la feuille et
le contenu du module "exporter" est bien recopié dans le thisworkbook
mais comme il n'y a pas d'événement d'ouverture de ce nouveau classeur,
les macros de thisworkbook ne sont pas exécutées.
Comment faire ?
many thanks



Avatar
GD
Bonsour® Misange
quelque chose dans le genre déclencher toi-même l'évenement :

Doevents ' ------pour prendre en compte les actions précédentes
With ActiveWorkbook
.RunAutoMacros xlAutoOpen '----------xlAutoClose etc...
.Close
End With

@+
wrote:
Coucou,

J'ai un classeur maitre contenant des modèles de feuilles pour
différents usages. Ce n'est pas un xlt mais un xls.

Par macro, je lance la création d'un nouveau classeur contenant une de
ces feuilles :
Sheets("machin").Copy
Je veux mettre dans le ThisWorkbook de ce nouveau classeur des
instructions contenues dans le module "exporter" du classeur maitre :

Dim NewM As Object, NewCode As String
With

ThisWorkbook.VBProject.VBComponents("exporter").CodeModule
NewCode = .Lines(1, .CountOfLines) End With With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString NewCode
End With

Ca marche presque impec : le classeur est bien créé avec la feuille et
le contenu du module "exporter" est bien recopié dans le thisworkbook
mais comme il n'y a pas d'événement d'ouverture de ce nouveau
classeur, les macros de thisworkbook ne sont pas exécutées.
Comment faire ?
many thanks


Avatar
Misange
Ok, je stocke aussi !

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 26/02/2005 11:45, :
Bonsour® Misange
quelque chose dans le genre déclencher toi-même l'évenement :

Doevents ' ------pour prendre en compte les actions précédentes
With ActiveWorkbook
.RunAutoMacros xlAutoOpen '----------xlAutoClose etc...
.Close
End With

@+
wrote:

Coucou,

J'ai un classeur maitre contenant des modèles de feuilles pour
différents usages. Ce n'est pas un xlt mais un xls.

Par macro, je lance la création d'un nouveau classeur contenant une de
ces feuilles :
Sheets("machin").Copy
Je veux mettre dans le ThisWorkbook de ce nouveau classeur des
instructions contenues dans le module "exporter" du classeur maitre :

Dim NewM As Object, NewCode As String
With

ThisWorkbook.VBProject.VBComponents("exporter").CodeModule
NewCode = .Lines(1, .CountOfLines) End With With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString NewCode
End With

Ca marche presque impec : le classeur est bien créé avec la feuille et
le contenu du module "exporter" est bien recopié dans le thisworkbook
mais comme il n'y a pas d'événement d'ouverture de ce nouveau
classeur, les macros de thisworkbook ne sont pas exécutées.
Comment faire ?
many thanks