XL 2016 liste combobox suivant résultat textbox

  • Initiateur de la discussion Initiateur de la discussion Mimi
  • 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 !

Mimi

XLDnaute Occasionnel
Bonjour à tout le forum,
Dans mon userform le premier combobox choisi le département, le textbox est le résultat de la combobox1, la combobox2 sert à lister le résultat de la textbox.
Les deux premier j'y suis arrivé, et la combobox2 ne me donne rien, je sais pas pourquoi ??
D'avance merci
Mimi
 

Pièces jointes

Bonjour @Mimi 🙂,
Votre procédure:
VB:
Private Sub TextBox1_Change()
With Sheets("Base")

If TextBox1.Value = "Côte-d'Or" Then
ComboBox1.RowSource = .Range("E2:E700").Address
End If

If TextBox1.Value = "Saône-et-Loire" Then
ComboBox1.RowSource = .Range("G2:G700").Address
End If

End With
End Sub

Il me semble 😱 que vous définissez la propriété RowSource de Combobox et non Combobox2...

Pour le fun, on peut raccourcir la procédure:
VB:
Private Sub TextBox1_Change()
  If ComboBox1.ListIndex > -1 Then ComboBox2.RowSource = Range(Choose(1 + ComboBox1.ListIndex, "Cote", "Saone")).Address Else ComboBox2.RowSource = Empty
End Sub
 
Dernière édition:
Re,

Préférez des définitions de plages sans cellules vides pour vos combobox:
Cote=DECALER(Base!$E$2:$E$699;0;0;NBVAL(Base!$E$2:$E$699);1)
Dept=DECALER(Base!$I$2:$I$4;0;0;NBVAL(Base!$I$2:$I$4);1)
Saone=DECALER(Base!$G$2:$G$568;0;0;NBVAL(Base!$G$2:$G$568);1)
 
Bonjour le fil, mimi, mapomme

Histoire de varier les plaisirs, (et accesoirement pour attendre que mon thé dominical finisse d'infuser 😉
Ci dessous deux variantes d'écriture
Variante 1
VB:
Private Sub TextBox1_Change()
Dim cb1$
cb1 = TextBox1.Value
With Sheets("Base")
ComboBox2.RowSource = .Range(Switch(cb1 = .[I2], "E2:E700", cb1 = .[I3], "G2:G700")).Address
End With
End Sub
Variante 2
VB:
Private Sub TextBox1_Change()
Dim f As Worksheet, cb1$, c&
Set f = Sheets("Base"): cb1 = TextBox1.Value
c = (0 * (cb1 = f.[I2])) + (-2 * (cb1 = f.[I3]))
ComboBox2.RowSource = f.Range("E2:E700").Offset(, c).Address
End Sub

PS: Ma préférence va à la seconde
(Mais on s'en tape, mon petit bonhomme 😉)

Oui, je sais il n'est jamais bon de parler de soi à la 3ième personne. 😉
 
- 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
40
Affichages
1 K
Réponses
1
Affichages
384
Réponses
1
Affichages
314
Retour