Nouveau classeur+ macro

Maxime

XLDnaute Nouveau
Bonjour,
je crée un classeur B par le biais d'une macro qui est dans un classeur A. Je veux ecrire dans les worksheet.activate du classeur B.
Est ce possible?
Je voudrais juste écrire une ligne par Worksheet activate (3 feuilles à faire)

Merci!
A+
Maxime
 

MichelXld

XLDnaute Barbatruc
Re : Nouveau classeur+ macro

bonjour Maxime

tu peux tester cette procedure

Code:
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim x As Integer
    Dim leCode As String
    
    Set Wb = Workbooks.Add
    
    For Each Ws In Wb.Worksheets
    
        leCode = "MsgBox ""Vous avez activé la feuille " & Ws.Name & ""

        With Wb.VBProject.VBComponents(Ws.Name).CodeModule
           x = .CreateEventProc("Activate", "WorkSheet")
           .InsertLines x + 1, leCode
         End With
    Next Ws



bon apres midi
MichelXld
 
Dernière édition:

Maxime

XLDnaute Nouveau
Re : Nouveau classeur+ macro

Bonjour,
tout d'abord, merci beaucoup.
Ca marche très bien à la différence que je n'arrive pas à mettre le code que j'aurais voulu à la place des msgbox


Sub test()
Dim Wb As Workbook
Dim Ws As Worksheet
Dim x As Integer
Dim leCode As String

Set Wb = Workbooks("nom.xls")



leCode = "Sheets("Feuil7").visible=false"


With Wb.VBProject.VBComponents("Feuil7").CodeModule
x = .CreateEventProc("Activate", "WorkSheet")
.InsertLines x + 1, leCode
End With


leCode = "SHeets("Feuil5").visible=false""

With Wb.VBProject.VBComponents("Feuil5").CodeModule
x = .CreateEventProc("Activate", "WorkSheet")
.InsertLines x + 1, leCode
End With

leCode = "SHeets("Feuil1").visible=false""

With Wb.VBProject.VBComponents("Feuil1").CodeModule
x = .CreateEventProc("Activate", "WorkSheet")
.InsertLines x + 1, leCode
End With
End Sub

Ca doit etre une histoire de guillemet mais je n'arrive pas à la résoudre!

Merci d'avance!

Maxime
 

Zon

XLDnaute Impliqué
Re : Nouveau classeur+ macro

Salut,

on peut raccourcir le code le cas échéant


Code:
Sub test()
Dim Wb As Workbook
Dim Ws As Worksheet
Dim x As Integer
Dim leCode As String
Dim I&
Dim T
Set Wb = ActiveWorkbook


T = Array("Feuil1", "Feuil5", "Feuil7")

For I = LBound(T) To UBound(T)
    With Wb.VBProject.VBComponents(T(I)).CodeModule
        x = .CreateEventProc("Activate", "WorkSheet")
        .InsertLines x + 1, "Sheets(""" & T(I) & """).Visible= False"
    End With
Next I

End Sub

A+++
 

MichelXld

XLDnaute Barbatruc
Re : Nouveau classeur+ macro

bonjour Maxime , bonjour cher Zon

dans ce cas tu peux utiliser

Code:
Dim VBComp As VBComponent
Dim X As Integer

Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBComp.Name = "NouveauModule"

With ThisWorkbook.VBProject.VBComponents("NouveauModule").CodeModule
    X = .CountOfLines
    .InsertLines X + 1, "Sub macroTest()"
    .InsertLines X + 2, "MsgBox ""Bonjour"""
    .InsertLines X + 3, "End Sub"
End With



bon apres midi
MichelXld
 

Discussions similaires

Réponses
20
Affichages
332
Réponses
12
Affichages
401

Statistiques des forums

Discussions
312 756
Messages
2 091 734
Membres
105 059
dernier inscrit
REHAULT