Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Création code par VBA dans ThisWorbook

25 views
Skip to first unread message

Jer

unread,
Feb 26, 2003, 4:18:41 AM2/26/03
to
Bonjour,
Je n'ai malheuresement pas accès à internet à partir de mon intranet
entreprise.
Pas moyen de mettre la main sur le code qui permet en Vba de créer un sub ou
une fonction dans ThisWorbook sur un nouveau classeur.
Au secours!!!!

Merci d'avance.
Jerôme.


Papou

unread,
Feb 26, 2003, 4:28:10 AM2/26/03
to
Bonjour Jérôme
La question est vague et trop vaste !
Le code associé à ThisWorkBook représente tous les évènements pouvant être
liés au classeur (j'en compte 20).
En fonction de ces évènements, on peut définir ce que l'on veut, par exemple
ici, afficher un message à l'ouverture du classeur :
Private Sub Workbook_Open()
MsgBox "Salut ça va ?"
End Sub
Pour accéder à ces évènements, clic droit sur l'icône d'Excel située à
gauche du menu Fichier d'Excel, puis Visualiser le code.
Je sais c'est un peu succinct mais il y a trop de choses à dire !
Cordialement
Pascal


"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b3i0oi$6ll$1...@muguet.sncf.fr...

Jer

unread,
Feb 26, 2003, 6:05:30 AM2/26/03
to
Bonjour Pascal.

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...

MacBob

unread,
Feb 26, 2003, 6:36:39 AM2/26/03
to
Salut Jer

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 :

Jer

unread,
Feb 26, 2003, 7:23:51 AM2/26/03
to
J'ai essayé ça marche.
Merci MacBob et Papou pour votre aide.
Bonne journée.

"MacBob" <no-spam-b...@wanadoo.fr> a écrit dans le message news:
BA826556.CDF%no-spam-b...@wanadoo.fr...

Michel Gaboly

unread,
Feb 26, 2003, 7:59:00 AM2/26/03
to
Bonjour,

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


Clément Marcotte (MVP)

unread,
Feb 26, 2003, 12:15:03 PM2/26/03
to
Bonjour,

> 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...

0 new messages