Ecrire dans This Workbook

C

Christine

Guest
Bonjour,

J'ai une application excel, et à partir de cette application je crée un nouveau classeur excel qui est nomé et sauvegardé automatiquement par une macro.

Je voudrais pouvoir écrire dans "This Workbook" de ce nouveau classeur par le biais d'une macro qu'il soit sauvegarder et fermer.

Est ce que quelqu'un connait le code qui me permettrait de réaliser cette opération ?

Je vous remercie par avance

Christine
 
@

@+Thierry

Guest
Bonjour Christine

Pour écrire dans un nouveau classeur et si tu as déjà son nom et qu'il est encore ouvert ce code fera ce que tu veux.

Pour cet exemple le nouveau classeur se nomme donc "New"

Sub EcrireThisWorkBook()
Dim X As Integer

With Workbooks("New.xls").VBProject.VBComponents("ThisWorkbook").CodeModule
X = .CountOfLines
.InsertLines X + 1, "Private Sub Workbook_Open()"
.InsertLines X + 2, "MsgBox ""Coucou"",VBinformation "
.InsertLines X + 3, "End Sub"
End With
End Sub

NB : Of course il ne faut pas que la macro WorkBook_Open existe déjà dans le classeur "New"... sinon il y aura un blème !!

Je me suis inspiré d'un code de John Walk, pour créer un UserForm de toute pièce dans le lequel il crée aussi un module.

On pourrait aussi faire comme ceci :

Sub EcrireThisWorBook2()
Dim VBA As String
VBA = VBA & "Private Sub Workbook_Open()" & vbCrLf
VBA = VBA & "MsgBox ""Coucou"",VBinformation " & vbCrLf
VBA = VBA & "End Sub" & vbCrLf
With Workbooks("New.xls").VBProject.VBComponents("ThisWorkbook").CodeModule
.AddFromString VBA
End With
End Sub

Voilà, c'est la première fois que j'écris du VBA depuis du VBA !! j'ai un peu cherché mais c'est assez facile tant que l'on est sur un module vierge... Car sinon là çà doit se Corser !!!

Bon Week End
@+Thierry
 
C

Christine

Guest
thisworkbook : super pour écrir dedans mais comment supprimé un module en VBA

C'est effectivement avec un peu de retard que je vous informe des mes tests, je m'en excuse...

J'ai pris la première solution qui fonctionne super bien.
Je l'ai couplée avec une macro qui me permet de copier un module qui existe dans mon fichier maitre.

Ainsi, lorsque j'ouvre mon nouveau classeur, mes macros s'activent automatiquement.

Maintenant, j'aurai besoin de faire l'effet inverse pour une autre application.
C'est à dire que, j'ai une application avec plusieurs feuilles qui contiennent des macros. Je crée (par le biais d'une macro), un nouveau fichier ou je recopie mes feuilles dedans, puis ce nouveau fichier est sauvegardé et fermé automatiquement.
Le problème, c'est que ce nouveau classeur contient des macros (celles qui sont rattachées aux feuilles), alors que pour une fois je ne voulais plus de macros dans ce classeur
Est ce que quelqu'un connait le code permettant de supprimé du VBA lié à une feuille.
J'ai le livre de John Walkenbach, mais je n'ai rien trouver...ou plustot je n'ai pas su trouvé. C'est ça quand on veut jouer dans la cour des grands...

Merci d'avance


Christine
 

Discussions similaires

Statistiques des forums

Discussions
314 644
Messages
2 111 528
Membres
111 189
dernier inscrit
Laurent.