XL 2019 afficher ou masquer des textbox et label selon la valeur d'un combobox

Monhtc

XLDnaute Occasionnel
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"
 

Pièces jointes

  • POTEST.xlsm
    14.3 KB · Affichages: 10

Dudu2

XLDnaute Barbatruc
Bonjour,
VB:
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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Monhtc ,@Dudu2 , le Forum

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" ... ;)

Bonne découverte
@+Thierry
 

Pièces jointes

  • XLD_Monhtc_POTEST-1_USF_Loop_CTRL_v00.xlsm
    17.5 KB · Affichages: 30

_Thierry

XLDnaute Barbatruc
Repose en paix
Re @Dudu2

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.

Bonne soirée
@+Thierry
 
Dernière édition:

Monhtc

XLDnaute Occasionnel
Bonjour,
VB:
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
Ca marche nickel merci grand merci
 

Monhtc

XLDnaute Occasionnel
Re @Dudu2

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.

Bonne soirée
@+Thierry
Merci professeur. sauf que je me suis perdu dans l'adaptation du code. En effet j'ai constaté que deux textbox se sont masqués
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir @Monhtc ,

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")...

Bonne découverte ;)

@+Thierry
 

Pièces jointes

  • XLD_Monhtc_POTEST-1_USF_Loop_CTRL_v01.xlsm
    24.8 KB · Affichages: 51

Discussions similaires