Bonjour chers tous. Quelqu'un pour m'aider peut etre?
J'ai un Userform composé de 5 textbox :
-textbox
-textbox2
-textbox3
-textbox5
-textbox6
et 1 combobox avec les option ("BASIC", "COMPLET", "FULL", "PREMIUM")
Je souhaite masquer au lancement du userfom la textbox6 et son label26 mais l'afficher si et seulement si la valeur de la combobox est "FULL"
Private Sub Combobox_Change()
If Me.Combobox.List(Me.Combobox.ListIndex) = "FULL" Then
Me.TextBox6.Visible = True
Me.Label26.Visible = True
Else
Me.TextBox6.Visible = False
Me.Label26.Visible = False
End If
End Sub
Private Sub UserForm_Initialize()
Combobox.List = Array("BASIC", "COMPLET", "FULL", "PREMIUM")
Me.TextBox6.Visible = False
Me.Label26.Visible = False
End Sub
La même approche mais avec une meilleure "rigueur" dans le nommage des Controls ActiveX du Userform afin de se permettre de faire des Loop appropriés et plus efficaces en cas de redondance selon les autres options ("BASIC", "COMPLET", "FULL", "PREMIUM") selon le cas si on joue à "cache-cache" ...
Oh ce sont des habitudes de vieux singes.... Comme j'ai dit si, dans l'évolution, si on joue à "cache-cache" ...
Le loop X permet ceci :
VB:
For Each CTRL In Me.Controls
For x = 1 To 6
Select Case x
Case 4 'Option non Full
If CTRL.Name = "TextBox" & x Or CTRL.Name = "Label" & x Then
CTRL.Visible = False
End If
Case 3, 2, 1 'Option Basic par exemple ...
If CTRL.Name = "TextBox" & x Or CTRL.Name = "Label" & x Then
CTRL.Visible = False
End Select
Next x
Next CTRL
A force de faire des grimaces, on se ride, mais on anticipe, et sur 6 controls ca ne mange pas de pain ce double loop.
Il n'y a jamais de remarque inutile, en fait dans le cas précis de Monhtc, ta réponse du post #2 répond complètement à la demande. Moi je suis plus royaliste que leRoi ! LoL !
Private Sub Combobox_Change()
If Me.Combobox.List(Me.Combobox.ListIndex) = "FULL" Then
Me.TextBox6.Visible = True
Me.Label26.Visible = True
Else
Me.TextBox6.Visible = False
Me.Label26.Visible = False
End If
End Sub
Private Sub UserForm_Initialize()
Combobox.List = Array("BASIC", "COMPLET", "FULL", "PREMIUM")
Me.TextBox6.Visible = False
Me.Label26.Visible = False
End Sub
Oh ce sont des habitudes de vieux singes.... Comme j'ai dit si, dans l'évolution, si on joue à "cache-cache" ...
Le loop X permet ceci :
VB:
For Each CTRL In Me.Controls
For x = 1 To 6
Select Case x
Case 4 'Option non Full
If CTRL.Name = "TextBox" & x Or CTRL.Name = "Label" & x Then
CTRL.Visible = False
End If
Case 3, 2, 1 'Option Basic par exemple ...
If CTRL.Name = "TextBox" & x Or CTRL.Name = "Label" & x Then
CTRL.Visible = False
End Select
Next x
Next CTRL
A force de faire des grimaces, on se ride, mais on anticipe, et sur 6 controls ca ne mange pas de pain ce double loop.
qu'est ce qui te perd ? Tu as six TextBoxs et six Labels je les ai renumérotées proprement dans l'ordre logique de leur emplacement respectif de 1 à 6...
Ensuite je peux "jouer" avec un Loop X de 1 à 6 ...
J'ai fait une autre démo v01 avec des cas un peu plus "cache-cache" (testes "PREMIUM")...