Modifier dynamiquement le code d'un autre formulaire
Bonjour,
J'ai crée un module de class qui crée dynamiquement une listbox, j'arrive à me débrouiller pour gérer les évènements, vu que je connais déjà son nom j'ai écris la sub dans le code du formulaire dynform. (comme une anticipation en fait, mais bien sur ca n'a rien de dynamique)
Mais pour autant, j'ai vu que le vba sous excel permet d'écrire, modifier du code dans un autre formulaire et j'aurais aimé avoir des informations là dessus mais pour access
Ma listbox s'appelle ls_recept, si je voulais qu'a sa création dynamique cela aille modifier le formulaire dynform (qui s'affiche form_dynform dans l'éditeur de code) pour rajouter que sur un ondblclick cela affiche une msgbox "salut !" comment ca se passerait ? J'ai lu du code sur le site, mais le fait qu'il y ait aussi la création d'un formulaire dynamique fait que je m'y perds totalement.
Code:
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 52
| Option Explicit
Dim Usf As Object
Sub lancementProcedure()
Dim X As Object
Dim i As Integer
Dim strList As String
strList = "ListBox1"
Set X = creationUserForm_Et_listBox_Dynamique(strList)
For i = 1 To 10
X.Controls(strList).AddItem "Donnee " & i
Next i
X.Show
ThisWorkbook.VBProject.VBComponents.Remove Usf
Set Usf = Nothing
End Sub
Function creationUserForm_Et_listBox_Dynamique(nomListe As String) As Object
Dim ObjListBox As Object
Dim j As Integer
Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)
With Usf
.Properties("Caption") = "Mon UserForm"
.Properties("Width") = 300
.Properties("Height") = 200
End With
Set ObjListBox = Usf.Designer.Controls.Add("Forms.ListBox.1")
With ObjListBox
.Left = 20: .Top = 10: .Width = 90: .Height = 140
.Name = nomListe
.Object.ColumnCount = 1
.Object.ColumnWidths = 70
End With
With Usf.CodeModule
j = .CountOfLines
.InsertLines j + 1, "Sub " & nomListe & "_Click()"
.InsertLines j + 2, "If Not " & nomListe & ".ListIndex = -1 Then MsgBox " & nomListe
.InsertLines j + 3, "End Sub"
End With
VBA.UserForms.Add (Usf.Name)
Set creationUserForm_Et_listBox_Dynamique = UserForms(UserForms.Count - 1)
End Function |
Quand j'essaie ne serait ce que d'entrer Set Usf = ThisWorkbook.VBProject.VBComponents.Add(3)
je prends une erreur, thisworkbook doit être remplacé par le nom du projet ?
Merci d'avance.