Merci d'avance.
Jerôme.
"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b3i0oi$6ll$1...@muguet.sncf.fr...
Ahh je crois que mes explications devaient être vraiment confuses !!!
Dans mon fichier MonClassseur.xls
à partir d'un module x je veux écrire par code Vba
dans ThisWorkbook de Analyse.xls :
Private Sub Workbook_NewSheet(ByVal Sh As Object)
...
End Sub
Avec un exemple ça me semble un peu plus claire, du moins j'espere.
Cordialement.
Jérôme.
"Papou" <no_spam@> a écrit dans le message news:
OqZ3plX3...@TK2MSFTNGP10.phx.gbl...
Essaie donc ce qui suit
Sub zaza()
Dim Wb As Workbook
Dim MdWb As Object
Set Wb = Analyse.xls
Set MdWb = Wb.VBProject.VBComponents("ThisWorkbook").CodeModule
With MdWb
.insertLines 3, "Private Sub Workbook_NewSheet(ByVal Sh As Object)"
.insertLines 4, " ..."
.insertLines 5, "End Sub"
End With
Set Wb = Nothing: Set MdWb = Nothing
End Sub
dans l'article b3i70r$arl$1...@muguet.sncf.fr, Jer à jerome...@tl.sncf.fr a
écrit le 26/02/03 12:05 :
"MacBob" <no-spam-b...@wanadoo.fr> a écrit dans le message news:
BA826556.CDF%no-spam-b...@wanadoo.fr...
Voici, un peu tard ;-(((( une solution plus simple.
Bonjour,
MacBob t'as donné le principe, mais tu n'es pas obligé d'intervenir ligbe à ligne.
Il est en effet possible de faire l'opération globalement.
Pour ce faire, crée un nouveau module, appelé "Source" dans "MonClasseur.xls", contenant
exactement le code (y compris éventuellement Option Explicit) que tu veux avoir dans le
module "ThisWorkbook" de "Analyse.xls".
Peu importe qu'il ne soit pas fonctionnel (car les événements comme NewSheet ne sont
pas gérés dans un module normal.
Le contenu de ce module peut ensuite être recopié en une seule fois :
Il faut exécuter la procédure ci-dessous, qui doit être écrite dans un autre module de
"MonClasseur.xls" (même classeur que celui contenant le module "Source"), "Analyse.xls"
étant le classeur actif.
L'intérêt d'utiliser le classeur actif est de pouvoir mettre successivement à jour le module
"ThisWorkbook" de plusieurs classeurs, sans avoie à adapter le code.
Sub MAJClasseur()
Dim NewCode As String
' Copie du code du module Source, lu dans CE classeur
With ThisWorkbook.VBProject.VBComponents("Source").CodeModule
NewCode = .Lines(1, .CountOfLines)
MsgBox .CountOfLines
End With
' MAJ du code de ThisWorkbook
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString NewCode
End With
End Sub
Jer a écrit :
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
> J'ai essayé ça marche.
Avec deux précautions:
1) Cocher la référence à la bibliothèque Visual Basic Extrensibility
2) Pour les gens qui utilisent Excel 2002 (2000 ?)
Outils-Options-Sécurité - Sécurité des macros - Sources fiables -
Cocher Faire confiance au projet Visual Basic
P.S Il y a quelque chose de similaire pour Word.
--
"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b3ibjo$dr5$1...@muguet.sncf.fr...