Bonjour,
Je cherche à créer une macro qui en crée une autre puis qui l'appelle.
Tout va bien, sauf que j'ai un message du compilateur qui me dit que la macro que j'appelle n'existe pas...
Et pour cause, elle n'est pas encore créée...
Comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Function CreMod(NomMod As String, Optional ModCree As Boolean) As Boolean Dim VBComp As VBComponent Dim VF_x As Boolean Dim X_x As Integer Dim NomSub As String 'Ajoute un module standard dans le classeur '1) Le module à créer ne doit pas exister On Error Resume Next Set VBComp = ThisWorkbook.VBProject.VBComponents(NomMod) If VBComp Is Nothing Then VF_x = False Else VF_x = True MsgBox "Le Module " & NomMod & " existe déjà" & Chr(10) & " Error code : 01" Exit Function End If Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(1) 'Renomme le module VBComp.Name = NomMod ' Ecriture du code dans le module '1) Ecriture du code ligne à ligne dans le module NomSub = "TestSub" With VBComp.CodeModule X_x = .CountOfLines ' .InsertLines X_x + 1, "Attribute VB_Name = ""TestCreationModule""" ' A utiliser pour creation d'un fichier .bas .InsertLines X_x + 2, "Option Explicit" .InsertLines X_x + 3, "" .InsertLines X_x + 4, "sub " & NomSub & "()" .InsertLines X_x + 5, "' Test de création automatique de Module" .InsertLines X_x + 6, "Debug.Print ""Je suis passé par TestSub "" & Now" .InsertLines X_x + 7, "End Sub" End With '2) La proc est lancée TestSub CreMod = 1 End Function
J'ai aussi essayé de mettre le nom de la Sub dans une variable, sans plus de succès...
Merci de vos aides.
Partager