XL 2019 Macro pour insérer une macro!

  • Initiateur de la discussion Initiateur de la discussion Seb
  • 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 !

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

Discussions similaires

Réponses
10
Affichages
281
Réponses
4
Affichages
177
Réponses
5
Affichages
182
Réponses
8
Affichages
466
Réponses
5
Affichages
232
Retour