Liste ComboBox [Résolu]

Signaler
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
-
Bonjour,

Voici mon problème.

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

Valeur = ComboBox3.Text
ActiveSheet.Cells.Find(What:=Valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate

TextBox17.Text = ActiveCell.Offset(0, 1).Text
ComboBox4.Text = ActiveCell.Offset(0, 2).Text

Sheets(TextBox9.Text).Select
Application.ScreenUpdating = True
End Sub

Voici un exemple du fichier excel:

                                Colone O  Colone P                               Colone Q
    ACT                                        actif                                         AME                         Amélioration locatives
    ACT                                        actif                                         AML                         Amort. cumul. Logiciels
    ACT                                        actif                                         AMM                  Amort. cumul. mobilier de bureau
    BAN                                      banque                                      ENC                            Encaisse - Solde
    DEP                                     dépenses                                     AMP                 Aménagement paysager utilisation résidentielle

etc..........

Merci de vôtre aide 

2 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut,

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
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
3
Merci encore une fois, ça fonctionne.