Conditionner la saisie d'un champ dans un formulaire sous Excel

Résolu
nicoco91 - 26 déc. 2012 à 15:02
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 déc. 2012 à 18:22
Bonjour à tous,

Je dois modifier un formulaire (développé en VBA sous Excel 2002) afin de simplifier la saisie utilisateur. Je souhaite pouvoir conditionner la saisie d'un champ (champ2) du formulaire en fonction de la valeur d'un autre champ (champ1), défini par liste déroulante. Si la valeur du champ1 est égale à la valeur1, alors la saisie est possible dans le champ2, sinon l'utilisateur ne peut pas saisir ce champ2 (il devient non séléctionnable par clic ou par tabulation) en devenant grisé. J'espère que c'est assez clair.
Merci d'avance pour vos réponses

nicolas

11 réponses

Utilisateur anonyme
26 déc. 2012 à 16:33
Quand tu insères du code dans le forum utilise les balises de code VB (troisième icône à partir de droite), comme je viens de faire.

C'est ça que tu veux faire?
Private Sub TextBox1_Change()
If TextBox1.Text = ComboBox1.Value Then
   TextBox2.Enabled = True 'Débloque le champ2
Else
   TextBox2.Enabled = False 'Bloque le champ2
End If
End Sub

Private Sub TextBox2_Change()
If TextBox2.Text = ComboBox2.Value Then
   TextBox3.Enabled = True 'Débloque le champ3
Else
   TextBox3.Enabled = False 'Bloque le champ3
End If
End Sub

Private Sub UserForm_Initialize()
'Au démarrage:
TextBox2.Enabled = False 'Bloque le champ2
TextBox3.Enabled = False 'Bloque le champ3
End Sub



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 déc. 2012 à 17:49
Bonjour,
Il y a un abîme entre ton premier et ton dernier message !
Si l'on s'en tient à ton dernier :
Il te faut inhiber les trois textboxes au départ et ne libérer que celle quii correspond à un choix dans la combobox !
C'est donc dans l'évènement Click de la comùbo qu'il te faut écrire ton code de blocage ou de libération de tes textboxes, en fonction du choix fait dan,s la combo

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
Utilisateur anonyme
26 déc. 2012 à 15:52
Bonjour,
J'espère que c'est assez clair.

Oui tout à fait, et il est où le code que tu as commencé?
A quel niveau ça bloque?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Salut acive,

Je débute en VBA. Les valeurs de la liste déroulante sont codées en dur "saisie1" et "saisie2". Mais je ne suis pas encore bien familiarisé avec la syntaxe.

Le code débute comme ceci :
If Userform1.ComboBox1.Value = "saisie1" Then

Après, je bloque, il faudrait définir que les TextBox2 et TextBox3 ne puissent pas être saisissables.

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 déc. 2012 à 16:16
Re:
Qu'appelles-tu un champ? un champ de formulaire? une cellule? un textbox?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Merci à toi j'arrive presque au résultat souhaité avec le code suivant:

Private Sub TextBox1_Change()

If ComboBox1.Text = "BLABLABLA" Then
TextBox1.Enabled = False
Else
TextBox1.Enabled = True
End If
        
End Sub


Par contre, il est possible de saisir 1 caractère dans le Textbox1 avant qu'il ne se bloque en grisé. L'idéal serait que l'utilisateur ne puisse pas se positionner dans le Textbox1 quand la valeur "BLABLABLA" est contenue dans le Combobox1.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 déc. 2012 à 17:55
J'espère que ta question n'était pas tout simplement : "comment savoir sur quel index d'une combobox j'ai cliqué ?", hein ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
merci ucfoutu,

je fais quelques essais et revient vers toi et acive.

la question initiale est bien d’empêcher la saisie d'une Textbox dans un formulaire si la valeur contenue dans une ComboBox est égale à "BLABLABLA". Le but étant d'éviter de saisir des infos qui ne serviront pas.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 déc. 2012 à 22:11
On ne t'entend plus ...
Mais on entend mon petit doigt. Et sais-tu ce qu'il me dit ? ===>>
"si j'ai bien deviné, nicoco91 n'a besoin que d'une seule textbox et pas de trois"
Il se trompe rarement, tu sais, mon petit doigt. Et s'il a raison, c'est plus un problème de réflexion que de développement.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonsoir,

Après quelques essais, j'ai réussi à obtenir le résultat souhaité. Merci à tous les 2 pour vos explications
Le VBA commence à être plus clair.
A une prochaine sur le forum
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 déc. 2012 à 18:22
Bien.
Attarde-toi cependant à ,mon message du mercredi 26 décembre 2012 à 22:11:07
Une seule textbox devrait faire l'affaire, puisqu'il ne s'agit que de faciliter une saisie. Il suffit alors d'affecter à telle ou telle autre variable (ou telle ou telle autre cellule, selon le cas) la saisie de cette textbox en fonction de l'index sélectionné de la combobox !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous