Rendre impossible saisie TextBox suivant Combobox

  • Initiateur de la discussion Initiateur de la discussion Delirium
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Delirium

XLDnaute Occasionnel
Bonsoir à tous.

Voici ce que je voudrais réaliser :

J'ai un userform avec un Combobox qui en fonction du choix de l'utilisateur dans une cellule 'A1' et un TextBox qui affecte une valeur dans une cellule 'B1'.

Je voudrais que en fonction du choix de l'utilisateur au niveau du ComboBox la saisie du TextBox soit impossible et que la valeur affectée à la cellule 'B1' soit 0.

Merci de votre aide et a bientôt.
 
Bonsoir Hervé et merci pour ton aide.

L'exemple que tu m'as passé ne correspond pas tout à fait à mes besoin car :

1 - l'affichage dans mon combobox vient d'un RowSource qui son les cellules 'L4:L12' et ListIndex 'L2'.

2 - Dans mon Combobox j'ai plusieurs choix avec certain qui active mon textbox et d'autre qui le désactive.

Je suis entrain d'essayé d'adapter ton exemple à mon cas mais je nesuis pas un pro du VBA et sa ne marche pas comme je veux.

Petite question : qu'est ce que 'SetFocus', et à quoi sa sert dans ton code ?

Merci et @+
 
Bonjour


oui là c'est vrai que mon exemple ne peut plus correspondre, vu la différence entre ta première demande et le complément d'information.

le mieux serait de nous faire passer le fichier avec l'userform posant problème, ce serait plus simple.

A plus

Salut
 
Bonsoir

Voici mon fichier exemple.

-Si l'utilisateur choisit 'Pas de ventilation' alors les 3 textBox sont désactivés.

-Si l'utilisateur choisit 'Ventilation simple flux' alors les 2° textBox sont activés et le Textbox efficacité de l'échangeur est désactivé.

-Si l'utilisateur choisit 'Ventilation double flux' alors les textBox sont tous activés.


Si les TextBox sont désactivés alors les cellule aux quels ils sont afféctés prennent la valeur 0.

Si les textBox sont activés, alors la valeurs des cellules s'affiche à l'ouverture de l'userform.

voila, 😉 merci et @+ [file name=Caché_TextBox_20050418203708.zip size=17741]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Caché_TextBox_20050418203708.zip[/file]
 

Pièces jointes

Bonsoir Hervé.

Bon on s'approche de se que je cherche.

Le seul truc c'est que lorsque les TextBox sont désactivés, il faut que la valeur dans les cellule à laquel est lié le textebox soit 0.

Merci pour ton aide (Tu as bien bossé 😉 ) et @+
 
Bonsoir

J'ai un autre problème sur ton fichier.

Pour mon application j'ai besoin qu'à l'ouverture de l'userform la position du combobox et donc les textbox doivent être activés ou désactivé en fonction de cette position. Lorsque l'on choisit 'Ventilation simple flux' ou 'Ventilation double flux' que l'on sort de l'userform, puis le réouvre, la position du combobox doit être détecté ainsi que pour les textbox.

J'ai donc modifié ton code comme cela :


Code:
'Button fermer déperditions
Private Sub ButtonFermerDéperditions_Click()
Déperditions.Hide
End Sub

'Débit de ventilation en occupation
Private Sub TextBoxDébitOccup_Change()
Range('B3') = TextBoxDébitOccup.Value
End Sub
'Débit de ventilation en inoccupation
Private Sub TextBoxDébitInoccup_Change()
Range('B5') = TextBoxDébitInoccup.Value
End Sub
'Efficacité de l'échangeur double flux
Private Sub TextBoxEfficacitéEchan_Change()
Range('B7') = TextBoxEfficacitéEchan.Value
End Sub

'Affichage des données à l'ouvertur de l'userform
Private Sub UserForm_Initialize()
TextBoxDébitOccup.Value = Range('B3')
TextBoxDébitInoccup.Value = Range('B5')
TextBoxEfficacitéEchan.Value = Range('B7')
With ComboBox2 'Combobox Choix du type de ventilation
.RowSource = 'L16:L18'
.ListIndex = Range('L14').Value + 0
End With
For Each ctrl In Controls
    If TypeOf ctrl Is MSForms.TextBox Then
        ctrl.Enabled = False
        ctrl.BackStyle = fmBackStyleTransparent
        ctrl.BackColor = &H80000004
    End If
Next
inittextbox
End Sub


'Combobox Choix du type de ventilation
Private Sub ComboBox2_Click()
Range('L14').Value = ComboBox2.ListIndex + 0
End Sub
Private Sub ComboBox2_Change()
inittextbox
Select Case ComboBox2.ListIndex
    Case 0: Exit Sub
    Case 1
        With TextBoxDébitOccup
            .Enabled = True
            .BackStyle = fmBackStyleOpaque
            .BackColor = &H80000005
        End With
        With TextBoxDébitInoccup
            .Enabled = True
            .BackStyle = fmBackStyleOpaque
            .BackColor = &H80000005
        End With
    Case 2
        For Each ctrl In Controls
            If TypeOf ctrl Is MSForms.TextBox Then
                ctrl.Enabled = True
                ctrl.BackStyle = fmBackStyleOpaque
                ctrl.BackColor = &H80000005
            End If
        Next
End Select
End Sub
Public Sub inittextbox()
For Each ctrl In Controls
    If TypeOf ctrl Is MSForms.TextBox Then
        ctrl.Enabled = False
        ctrl.BackStyle = fmBackStyleTransparent
        ctrl.BackColor = &H80000004
    End If
Next

End Sub

Or cela marche bien pour la position du combobox mais pas pour l'activation des textbox.


Salut et merci encore
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
379
Réponses
5
Affichages
415
  • Question Question
XL 2019 User Form
Réponses
9
Affichages
514
Retour