Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Comportement ComboBox

Mettallives81

XLDnaute Nouveau
Bonjour,

Dans un contexte de ComboBox dépendant, cette commande ( ComboBox2.Value = "") m'a permis de "vider" un choix déjà fait et affiché dans le combobox2 au changement de statut dans le ComboBox1:

Private Sub comboBox1_Change()
ComboBox2.Value = ""
If ComboBox1 = "OUI" Then ComboBox2.ListFillRange = "Choix!$D$9:$D$12"
If ComboBox1 = "NON" Then ComboBox2.ListFillRange = "Choix!$D$13:$D$16"
End Sub

Et j'aimerai pouvoir faire cohabiter cette propriété (fmStyleDropDownList) au comboBox2 afin de ne pouvoir modifier le contenu du ComboBox, mais si je le fait j'ai un message "erreur d’exécution 424 : objet requis" que je n'arrive pas à résoudre...

Cela ressemble à un conflit entre ( ComboBox2.Value = "") dans le Sub ComboBox1_Change, et la propriété (fmStyleDropDownList) du ComboBox2...

Si vous avez une idée je suis preneur!

Bien à vous
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour crescence

Si les combos sont dans une formulaire, il faut mettre dans userform_activate()
ComboBox1 = "": ComboBox2 = ""

Ensuite

VB:
Private Sub ComboBox1_Change()
If ComboBox1 <> "" Then
Call Changer
Else
Exit Sub
End If
End Sub

Private Sub Changer()
If ComboBox1 = "OUI" Then
ComboBox2.ListFillRange = "Choix!$D$9:$D$12"
Else
ComboBox2.ListFillRange = "Choix!$D$13:$D$16"
End If
End Sub
 

Mettallives81

XLDnaute Nouveau
Bonjour et merci pour votre réponse.

Cependant les comboBox ne sont pas dans un formulaire...

Je me permet de vous joindre le fichier afin que vous puissiez visualiser l'environnement.

Merci pour votre aide.
 

Pièces jointes

  • Grille.xlsm
    460.2 KB · Affichages: 44

Lone-wolf

XLDnaute Barbatruc
Re

Si c'est pour bloquer l'utilisation de la combobox2 , tu ajoute combobox2.Enabled = false à l'exemple que je t'ai donné. Vu que c'est des contrôles formulaire, la macro est identique. Sinon je ne comprend pas où tu veux en venir.

VB:
Private Sub ComboBox1_Change()
If ComboBox1 = "OUI" Then
ComboBox2.ListFillRange = "Choix!$D$9:$D$12"
ComboBox2.Enabled = True
Else
ComboBox2.ListFillRange = "Choix!$D$13:$D$16"
ComboBox2.Enabled = False
End If
End Sub

Si je veux faire un choix dans la combo2, d'après l'exemple que tu donne à avec la combo3, en la boquant, je suis pomme.
 
Dernière édition:

Mettallives81

XLDnaute Nouveau
Je vais tenter de reformuler le comportement voulu et ou je veux en venir car cela n'était peut-être pas assez précis (car je ne veux pas bloquer l'utilisation d'aucun ComboBox):

1 - Lorsque dans le combobox1 le "OUI" est choisi et un choix est fait dans le ComboBox 2 , un changement à "NON" du ComboBox 1 va vider automatiquement le choix et rendre vide le comboBox 2, disponible pour un nouveau choix dans une nouvelle liste (c'est exactement ce que je souhaite et actuellement ce que j'ai codé)

=> le souci c'est que les choix dans les combos sont éditable manuellement, je veux juste empêcher l'écriture manuelle dans tous les combobox ( ce qui est normalement possible avec la propriété (fmStyleDropDownList), mais ne fonctionne pas avec mon code actuel.
 

Lone-wolf

XLDnaute Barbatruc
Re

Pour le premier point

Private Sub ComboBox2_Change()
If ComboBox2 <> "" Then ComboBox1 = "NON"
If ComboBox1 = "NON" Then ComboBox2 = ""
End Sub


Pour le 2ème point, hélas je ne peux t'aider.
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…