Dans ma feuille excel "Base de données", Dans la colone N2 à N63, ce trouve les Code A. Dans la colone O2 à O63, ce trouve les descriptions du Code A. Dans la colone P2 à P63, ce trouve les Code B et dans la colone Q2 à Q63, ce trouve les descriptions du code B.
Maintenant, ce que je voudrais faire, c'est que dans mon UserForm1, Le ComboBox3, doit contenir la liste des Code A de la colone N de N2 à N63 et que dans le TextBox17, il me donne tout de suite la description du code A de la colone O de O2 à O63 de la même ligne.
Ensuite, puise que dans la colone N, il peut y avoir plusieurs fois le même code ex: ACT qui apparait 8 fois, donc, qui peut être associer à plusieurs code B, je voudrais que dans le ComboBox4, qu'il m'apparaise seulement les code B de la colone P qui correspond. Une fois que j'aurrais choisit le code B dans le ComboBox4, dans le TextBox18, il apparaiterat la description dans la colone Q.
Voici mon début de script que j'ai fais:
Private Sub ComboBox3_Change()
Application.ScreenUpdating = False
Sheets("Base de données").Select
ComboBox3.RowSource = "N2:N63" 'ta plage de données
If ComboBox3.Value = "N2" Then
End If
Application.ScreenUpdating = False
Sheets("Base de données").Select
Si je comprends bien, tu devrais utiliser le ListIndex de ton (tes) combobox.
Comme tu utilises RowSource, le premier élément de ton combobox (Index 0) est équivalent à la ligne 2 de ta feuille.
Donc, Textbox17.text = Range("O" & Combobox3.ListIndex + 2)
J'ai pas testé, mais ça devrait être ça. Et même chose pour les autres contôles
Combobox4.listindex=combobox3.listindex
textbox18 = Range("Q" & combobox4.listindex + 2)
Donc, la partie de ton code avec les Find ne servira plus...
Et comme tu ne veux pas charger les combobox continuellement, mets ton code avec le RowSource dans UserForm_Initialize() plutôt que dans l'événement Change de ton Combobox.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI