bonjour,
voilà je me suis inspiré de l'exemple de la FAQ pour créer dans un formulaire un bouton avec du code derriere.
voici le code (le code en commentaire etait le code initial dans l'exemple de la faq)
j'ai une erreur lors de l'execution sur la ligne :
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
53
54
55 Public Sub CreerBoutonCode(NombrePartie As Integer, NomForm As String) Dim ctl As Control 'Ouvrir le formulaire en mode création DoCmd.OpenForm NomForm, acDesign 'Crée un contrôle "Groupe d'options" : Set ctl = CreateControl(NomForm, acCommandButton, , "", "", 2500, 800 + NombrePartie * 500, 1500, 300) With ctl 'Définit un nom pour le contrôle .Name = "Test" 'Déclare l'événement "Après mise à jour" du contrôle .OnClick = "[Event Procedure]" End With 'Normalement il ne nous reste plus qu'à écrire la procédure 'événementielle avec Module.CreateEventProc 'Mais étant donné que nous avons créé un groupe d'option 'il faut maintenant créer à l'intérieur, 'un contrôle pour chaque option (nous allons pour cela nous servir 'de l'argument "Parent" de la méthode CreateControl). 'Créons par exemple un bouton d'option : 'Set ctl = CreateControl(NomForm, acOptionButton, , ctl.Name, , 1500, 4000) 'With ctl ' .Name = "option1" ' .OptionValue = 1 'End With 'Et maintenant, création du code à éxécuter sur AfterUpdate de Options : Dim mdl As Module Dim lng As Long 'Sert à récupérer le numéro de la ligne d'insertion de la procédure Set mdl = Forms![NomForm].Module lng = mdl.CreateEventProc("OnClick", "Test") mdl.InsertLines lng + 1, _ vbTab & _ "MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34) '"If(option1.value = 2) then MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34) 'On libère mémoire allouées aux variables. Set ctl = Nothing Set mdl = Nothing End Sub
Set mdl = Forms![NomForm].Module
erreur : "impossible de trouver le formulaire nomform....."
je comprend vraiment pas l'erreur car le bouton a bien été créé sur mon formulaire (donc il l'a bien trouvé avant! pourquoi il le trouve plus à cette ligne?)
A la fin (lors de l'erreur) le bouton a été créé et le formulaire est toujours ouvert.
une idée?![]()
petites questions supplémentaires (peut etre que le pb vient de là car je ne comprend pas ces lignes).
1) que fait :
j'ai changé le afterupdate par onclick car au final je voudrais que mon code s'execute lors d'un clique sur mon commandbutton.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Déclare l'événement "Après mise à jour" du contrôle .OnClick = "[Event Procedure]"
2) et ca:
mon "onclick" est pour cette procédure un eventname mais je comprend pas d'où ca vient, ce que ca fait....
Code : Sélectionner tout - Visualiser dans une fenêtre à part lng = mdl.CreateEventProc("OnClick", "Test")
c'est en lien avec cette ligne?
voilà ce sera tout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Déclare l'événement "Après mise à jour" du contrôle .OnClick = "[Event Procedure]"![]()
merci d'avance
Partager