lucasgaetan
Messages postés8Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention25 mars 2011
-
24 mars 2011 à 10:17
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
24 mars 2011 à 12:52
Bonjour,
Dans un userform dynamique, je crée des TextBox et des Label (par code)
je souhaite rendre dépendant mon Label à mon TextBox
pour cela j'ai fais un InsertLines qui me crée Private Sub TextBox_Change()
Lorsque je lance ma macro tous va pour le mieux (tout où il faut comme il faut)
même Private Sub TextBox_Change() est écrit
Mais quand je modifie mon TextBox le Label ne change pas
il y a t il un ReLoad.userform ou un truck du genre qu'il faudrait mettre ?
Merci d'avance
ci-dessous mon code:
Private Sub UserForm_Activate()
Dim i As Long
Dim j As Long
Me.Label1.Caption = N°assemblage
PosLigne = 55
For i = 0 To UBound(RécapTabl)
If Not (RécapTabl(i, 0)(0, 0)) = "" Then 'RécapTabl est un tableau public regroupant plusieurs tableaux public
'la position RécapTabl(i, 0) donne le nom de ses tableaux
Call Ajout_Titre((RécapTabl(i, 1)))
For j = 0 To UBound(RécapTabl(i, 0))
Call Ajout_QtéLg((RécapTabl(i, 0)(j, 1)), i, j)
Call Ajout_Volum((RécapTabl(i, 0)(j, 1)), (RécapTabl(i, 0)(j, 3)), (RécapTabl(i, 0)(j, 4)), i, j)
PosLigne = PosLigne + 18
Next j
End If
Next i
Call Ajout_Code 'de fonctionne pas
End Sub
_______________________________________________
Public Function Ajout_Code()
Dim i As Long
Dim j As Long
Dim Code As String
Dim Txt As String
Dim Lbl As String
Dim k As Integer
Dim LgDépliée As Double
For i = 0 To UBound(RécapTabl)
For j = 0 To UBound(RécapTabl(i, 0))
Txt = "Lg" & i & "Txt" & j
Lbl = "Vol" & i & "Lbl" & j
LgDépliée = (RécapTabl(i, 0)(j, 4))
If LgDépliée 0 Then LgDépliée 1
k (RécapTabl(i, 0)(j, 1)) * (RécapTabl(i, 0)(j, 1)) * (RécapTabl(i, 0)(j, 3)) * LgDépliée 'k Old Lg * Old volume
Code = "Private Sub " & Txt & "_Change()" & vbCrLf
Code Code & "UserForm1." & Lbl & ".Caption " & k & " / (UserForm1." & Txt & ".Value)" & vbCrLf 'New Vol = k / New Lg
Code = Code & "End Sub" & vbCrLf
Application.VBE.CodePanes(1).CodeModule.InsertLines 1, Code
Next j
Next i
End Function
_______________________________________________
Public Function Ajout_Designation(Design As String)
Dim Titre As MSForms.Label
Set Titre = Me.Controls.Add("Forms.Label.1", , True)
Titre.Width = 225
Titre.Height = 11
Titre.Left = 10
Titre.Top = PosLigne
Titre.Caption = Design
Titre.Visible = True
Titre.Font.Size = 8
End Function
_______________________________________________
Public Function Ajout_QtéLg(QtéLg As Double, Préfix As Long, Suffix As Long)
Dim Titre As MSForms.TextBox
Dim Code As String
Set Titre = Me.Controls.Add("Forms.TextBox.1", , True)
Titre.Width = 45
Titre.Height = 15
Titre.Left = 240
Titre.Top = PosLigne
Titre.Value = QtéLg
Titre.Visible = True
Titre.Font.Size = 8
Titre.Name = "Lg" & Préfix & "Txt" & Suffix
'penser à la toupie
End Function
A voir également:
A l'aide, TextBox_Change() inefficace dans un userform dynamique
lucasgaetan
Messages postés8Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention25 mars 2011 24 mars 2011 à 10:21
Dsl Ajout_Designation(Design As String) n'a rien a faire ici pour comprendre le probleme
par contre il manque ça:
Public Function Ajout_Volum(QtéLg As Double, Section As Double, LgDépliée As Double, Préfix As Long, Suffix As Long)
Dim Titre As MSForms.Label
Dim Vol As Double
If LgDépliée 0 Then LgDépliée 1
Vol = QtéLg * Section * LgDépliée
Set Titre = Me.Controls.Add("Forms.Label.1", , True)
Titre.Width = 50
Titre.Height = 11
Titre.Left = 290
Titre.Top = PosLigne
Titre.Caption = Vol
Titre.Visible = True
Titre.Font.Size = 8
Titre.Name = "Vol" & Préfix & "Lbl" & Suffix
End Function
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 mars 2011 à 12:52
Private WithEvents MonTextBox As MSForms.TextBox
Private Sub MonTextBox_Change()
TextBox1.Text = MonTextBox.Text
End Sub
Private Sub UserForm_Activate()
Set MonTextBox = Controls.Add("Forms.TextBox.1", , True)
End Sub
Quand je modifie le contenu de mon TextBox dynamique, mon evenement Change est bien déclenché (merci WithEvents)