Rendre impossible saisie TextBox suivant Combobox

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.
 

Hervé

XLDnaute Barbatruc
Bonsoir

Un petit essai en pièce jointe, si j'ai bien compris.

Salut
[file name=Classeur2_20050417234417.zip size=9683]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur2_20050417234417.zip[/file]
 

Pièces jointes

  • Classeur2_20050417234417.zip
    9.5 KB · Affichages: 95

Delirium

XLDnaute Occasionnel
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 @+
 

Hervé

XLDnaute Barbatruc
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
 

Delirium

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

  • Caché_TextBox_20050418203708.zip
    17.3 KB · Affichages: 84

Hervé

XLDnaute Barbatruc
re

une proposition, en pièce jointe.

Salut
[file name=Cache_TextBox_20050418230030.zip size=16105]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Cache_TextBox_20050418230030.zip[/file]
 

Pièces jointes

  • Cache_TextBox_20050418230030.zip
    15.7 KB · Affichages: 87

Delirium

XLDnaute Occasionnel
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 @+
 

Delirium

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

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 260
Membres
102 844
dernier inscrit
atori2