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
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
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.