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