Nouveau classeur+ macro

  • Initiateur de la discussion Initiateur de la discussion Maxime
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Maxime

Guest
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
 
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:
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
 
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+++
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Remplissage auto
Réponses
14
Affichages
380
D
  • Question Question
Réponses
5
Affichages
250
Didierpasdoué
D
Retour