rennesbzh
Messages postés3Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention16 juin 2006
-
15 juin 2006 à 14:22
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
16 juin 2006 à 13:59
Bonour à tous,
voilà mon problème j'ai créé des controls en dynamique, mais je n'arrive pas à les utiliser pour des évènements.
J'utilise 1 fonction (créée dans un moduleà à partir de 2 userform différentes.
'Déclaration dans module1
Global cobo_tech() As ComboBox
Global Txtdebut_tech() As TextBox
Global Txtduree_tech() As TextBox
Global chk_tech() As CheckBox
Global cobo_mont() As ComboBox
Global Txtdebut_mont() As TextBox
Global Txtduree_mont() As TextBox
Global chk_mont() As CheckBox
Global lb() As Label
Global nbr_tech, nbr_mont As Integer
Sub dans module 1 :
Sub init_tech(nbr_tech As Integer, frm As UserForm, bcl As Integer, modif As Boolean)
Dim i As Integer
Dim j As Integer
Dim k As Integer
' ===========================================================================
'
' Création des combobox et Textbox en fonction du nombre de technicien alloué
'
' ===========================================================================
ReDim cobo_tech(nbr_tech) As ComboBox
ReDim chk_tech(nbr_tech) As CheckBox
ReDim Txtdebut_tech(nbr_tech) As TextBox
ReDim Txtduree_tech(nbr_tech) As TextBox
ReDim lbl(nbr_tech) As Label
For i = bcl To nbr_tech
If i <= 15 Then
j = 14
k = i
Else
j = 350
k = i - 15
End If
Set lbl(i) = frm.Controls.Add("Forms.label.1", "lbl", True)
With lbl(i)
.Caption = "Nom du Technicien"
.Move 10 + j, 280 + ((k - 1) * 30)
End With
Set lbl(i) = frm.Controls.Add("Forms.label.1", "lbl", True)
With lbl(i)
.Caption = "Date de début"
.Move 168 + j, 280 + ((k - 1) * 30)
End With
Set lbl(i) = frm.Controls.Add("Forms.label.1", "lbl", True)
With lbl(i)
.Caption = "Nombre de jours"
.Move 264 + j, 280 + ((k - 1) * 30)
End With
Set cobo_tech(i) = frm.Controls.Add("Forms.combobox.1", "cobo_tech", True)
With cobo_tech(i)
.Move 10 + j, 294 + ((k - 1) * 30)
.Width = 138
End With
' Test si demande modification d'affaire
If modif Then
Set chk_tech(i) = frm.Controls.Add("Forms.checkbox.1", "chk_tech", True)
With chk_tech(i)
.Move j - 8, 294 + ((k - 1) * 30)
.Width = 13.5
.Caption = ""
.Name = ""
.Value = False
End With
cobo_tech(i).Enabled = False
End If
' recherche des Technicien pour list dans la combo
rech_tech (i)
Set Txtdebut_tech(i) = frm.Controls.Add("Forms.textbox.1", "txtdebut_tech", True)
With Txtdebut_tech(i)
.Move 168 + j, 294 + ((k - 1) * 30)
.Width = 78
End With
Set Txtduree_tech(i) = frm.Controls.Add("Forms.textbox.1", "txtduree_tech", True)
With Txtduree_tech(i)
.Move 264 + j, 294 + ((k - 1) * 30)
.Width = 78
End With
Next
frmmodaff.TextBox37.Value = i
End Sub
et l'appel dans un userform
Case "TRE"
SelectTaskField row:=i, Column:="Marquée", RowRelative:=False
If ActiveCell = "Oui" Then
nbr_tech = nbr_tech + 1
Call init_tech(nbr_tech, frmmodaff, nbr_tech, True)
cobo_tech(nbr_tech).Value = nom
Txtdebut_tech(nbr_tech) = deb
Txtduree_tech(nbr_tech) = fin
TextBox36.Value = nbr_tech
End If
jusque là tous ce passe bien, mais je ne sais pas comment récupérer les évènements (ex valeur d'un checkbox).
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 15 juin 2006 à 14:36
La valeur d'un checkbox n'est pas un événement, c'est une propriété... tu peux y accèder par : Check1(Index).Value
Par contre, pour les événements à proprement parlé (tels que click), la question a déjà été posée plusieurs fois : pas possible de les récupèrer si tu crée un tableau de contrôle !
Sinon, avec un simple contrôle, c'est :
Public WithEvents Control As TypeControl
rennesbzh
Messages postés3Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention16 juin 2006 15 juin 2006 à 14:49
Merci pour ta réponse,
pour récupérer les valeurs, ça je connais, mais je veux controler tous changements de checkbox ou conbobox, et si j'ai bien compris la méthode que j'ai utilisé n'est pas la bonne ?
rennesbzh
Messages postés3Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention16 juin 2006 16 juin 2006 à 12:01
Bon, tout d'abord merci pour l'aide
Mais je dois louper quelque chose cra je n'arrive pas tout à fait au résultat
Je n'arrive pas à récuperer le "click" individuellement ou à défaut l'index du chekbox
Voici mon code
Dans un module de classe : "classe1"
Public WithEvents ess As CheckBox
Private Sub ess_click()
'ici je recupère bien tous mes évènement click
End Sub
Dans le code de mon userform
Option Explicit
Dim cgroup() As New Classe1
Public i As Integer
Private Sub CommandButton1_Click()
i = i + 1
ReDim Preserve cgroup(1 To i) As New Classe1
Set cgroup(i).ess = Controls.Add("Forms.checkbox.1", "toto", True)
With cgroup(i).ess
.Move i * 10, i * 20
.Visible = True
End With
End Sub
Si quelqu'un peux m'aider, merci<!-- / message -->
Vous n’avez pas trouvé la réponse que vous recherchez ?