XL 2019 Macro pour insérer une macro!

Seb

XLDnaute Occasionnel
Bonjour le forum,


J'ai un fichier qui me permet de créer d'autre fichier Excel avec des données. Jusque la tout va bien. Mais dans les nouveaux fichier qui sont crées, j'aimerais ajouter un bout de macro. A savoir que les nouveaux fichier n'ont pas besoin d'être enregistré.

Il me semble que je l'avais déjà fait pour un module mais je ne me souvient plus du tout et je Bugue dessus depuis plusieurs jours.
Voila la structure de mon code et celui que je veux ajouter dans "ThisWorkbook"

Sub ValeurUtiles
.....
Set wkb = Workbooks.Add
wkb.Activate

....
end sub

Je voudrais que dans le nouveau fichier Excel qui est crée, ajouter ce code dans "ThisWorkbook"

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim i As Long, Dl As Long, Valeur As String
Dl = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
Set mondico = CreateObject("Scripting.Dictionary")
For i = 5 To Dl
If Rows(i).EntireRow.Hidden = False Then
mondico(ActiveSheet.Cells(i, "B").Value) = ""
End If
Next i
a = mondico.keys
For i = LBound(a) To UBound(a)
If Valeur <> "" Then
Valeur = Valeur & " #" & a(i)
Else
Valeur = "#" & a(i)
End If
Next i
ActiveSheet.Range("L1") = Valeur
Set mondico = Nothing
End Sub

Je ne sais pas du tout comment m'y prendre.
Merci pour le coup de main !

Seb
 

Seb

XLDnaute Occasionnel
Pardon, je me suis mal exprimer.

Le fichier de base est utilisé pour plusieurs service qui creer son fichier. Il ferme le fichier source (Celui qui creer le fichier de données utiles). D'autre service utilise ce fichier source.
 

Staple1600

XLDnaute Barbatruc
Re

Voici un petit exemple
(pour tester en l'état, tu dois avoir deux classeurs ouverts dans Excel
dont un se nomme Classeur2
VB:
Sub Test_VBA()
Dim vLigCod(2), vStr$
vLigCod(0) = "Private Sub Workbook_Open"
vLigCod(1) = "MsgBox ""Bonjour,"" & Application.UserName"
vLigCod(2) = "End Sub"
vStr = Join(vLigCod, Chr(10))
Workbooks("Classeur2").VBProject.VBComponents("ThisWorkBook").CodeModule.AddFromString vStr
End Sub
Tu mets ce code dans le premier classeur
Tu verras qu'ensuite tu auras une procédure Workbook_Open du classeur2
NB: Ce n'est qu'un test sur un classeur ouvert et non enregistré, il faudra adapter si il s'agit d'un classeur fermé qu'il faudra ouvrir (par VBA) au préalable

PS: Il faut cocher dans les paramètres macro: [X] Accès approuvé au modèle d'objet du projet VBA
(Options/Centre de gestion de la confidentialité/Paramètres macros)
 

Seb

XLDnaute Occasionnel
Re

Voici un petit exemple
(pour tester en l'état, tu dois avoir deux classeurs ouverts dans Excel
dont un se nomme Classeur2
VB:
Sub Test_VBA()
Dim vLigCod(2), vStr$
vLigCod(0) = "Private Sub Workbook_Open"
vLigCod(1) = "MsgBox ""Bonjour,"" & Application.UserName"
vLigCod(2) = "End Sub"
vStr = Join(vLigCod, Chr(10))
Workbooks("Classeur2").VBProject.VBComponents("ThisWorkBook").CodeModule.AddFromString vStr
End Sub
Tu mets ce code dans le premier classeur
Tu verras qu'ensuite tu auras une procédure Workbook_Open du classeur2
NB: Ce n'est qu'un test sur un classeur ouvert et non enregistré, il faudra adapter si il s'agit d'un classeur fermé qu'il faudra ouvrir (par VBA) au préalable
On dirait que c'est pile poil ce que j'ai besoin. Je teste immédiatement.
 

Discussions similaires

Réponses
12
Affichages
241
Réponses
17
Affichages
304

Statistiques des forums

Discussions
312 082
Messages
2 085 168
Membres
102 804
dernier inscrit
edaguo