Listbox suivant Combobox sans passer par RowSource

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 !

cathodique

XLDnaute Barbatruc
Bonjour,

J'ai bien trouvé sur le forum, une procédure pour afficher dans une textbox un texte suivant la sélection dans une combobox avec une seule ligne de code:
Code:
Private Sub ComboBox1_Change()
    TextBox1.Text = Feuil1.[B1].Offset(ComboBox1.ListIndex)
End Sub

et renseigner RowSource, mais cette solution ne me convient pas car il faut que les données soient sur la première ligne de la feuille. j'ai fait des tests sans succès.

Je voudrais qu'à (combobox) la valeur "1" corresponde (textbox) "Ami"; à "2" --> "Collègue" et à "3" -->"Famille"

Auriez-vous une autre solution afin que ces valeurs soient dans le code? je pensais à ComboBox1.AddItem, mais vu mon faible niveau en vba je bloque.

Je vous remercie pour votre aide.

Cordialement,
 

Pièces jointes

Re : Listbox suivant Combobox sans passer par RowSource

Bonjour
Ceci devrait convenir
Code:
Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub

Private Sub ComboBox1_Change()
Dim correspondance(2) As String
correspondance(0) = "Ami"
correspondance(1) = "Collègue"
correspondance(2) = "Famille"

TextBox1.Text = correspondance(ComboBox1.Value - 1)
End Sub


Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 3
ComboBox1.AddItem i
Next
End Sub

Mais je ne suis pas sûr d'avoir bien compris ce que tu voulais
Dis moi si cela convient 🙂
 
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour Tashiqi,

C'est exactement ce que je voulais obtenir et t'en suis vraiment reconnaissant.
Code:
Dim correspondance(2) As String
Pourrais-tu m'expliquer la signification du 2 entre parenthèses de la ligne de code ci-dessus.

Merci beaucoup.

Cordialement,
 
Re : Listbox suivant Combobox sans passer par RowSource

Le 2 désigne la dimension du tableau, sachant que le tableau commence à 0, ce qui fait 3 valeurs.
Si tu as plus de valeurs, il faut le changer.
plus loin dans le code, les chiffres entre parenthèses désignent la ligne du tableau où on va chercher notre valeur
Si tu ne sais pas à l'avance la quantité de données dans ton tableau, tu peux le déclarer
Dim correspondance() As String
et le modifier après.
Pour plus d'informations, cherche des tutos sur les variables tableaux 🙂
 
Re : Listbox suivant Combobox sans passer par RowSource

bonjour tous

tu peus simplifier

Code:
Private Sub UserForm_Initialize()
 ComboBox1.List = Feuil2.Range("e6:f" & Feuil2.Cells(Rows.Count, 5).End(xlUp).Row).Value
End Sub
Private Sub ComboBox1_Click()
 TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
End Sub
 
Re : Listbox suivant Combobox sans passer par RowSource [Résolu]

🙂🙂Merci pour ton 2ème code, mais je préfère de loin le 1er car c'est tout ce que j'ai comme données.

Je conserve le 2ème code en cas d'évolution de mes données. Trop gentil de ta part.

Merci beaucoup.
 
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour à tous,

... et renseigner RowSource, mais cette solution ne me convient pas car il faut que les données soient sur la première ligne de la feuille. j'ai fait des tests sans succès.

Je n'ai pas compris cette phrase...Avec l'une des 3 expressions ci-dessous, cela fonctionne...

Code:
Private Sub UserForm_Initialize()
    'ComboBox1.RowSource = "Données!E6:E8"
    'ComboBox1.RowSource = Worksheets(Feuil2.Name).Range("E6:E8").Address
    ComboBox1.RowSource = Worksheets("Données").Range("E6:E8").Address
End Sub

Cordialement
 
Re : Listbox suivant Combobox sans passer par RowSource

Je reviens pour te demander comment faire pour éviter la saisie dans la combobox. J'ai fait un petit test et j'ai eu un code d'erreur13, incompatibilité de type. avec arrêt sur cette ligne de code
Code:
TextBox1.Text = correspondance(ComboBox1.Value - 1)

Merci beaucoup.

Cordialement,
 
Dernière édition:
Re : Listbox suivant Combobox sans passer par RowSource

Bonsoir à tous.
Moi j'ai fait :
VB:
Private Sub UserForm_Initialize()
Me.ComboBox1.List = Feuil2.[E6:E8].Value
End Sub
Private Sub ComboBox1_Change()
TextBox1.Text = Feuil2.[F6].Offset(ComboBox1.ListIndex)
End Sub
Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub
 
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour à tous,



Je n'ai pas compris cette phrase...Avec l'une des 3 expressions ci-dessous, cela fonctionne...

Code:
Private Sub UserForm_Initialize()
    'ComboBox1.RowSource = "Données!E6:E8"
    'ComboBox1.RowSource = Worksheets(Feuil2.Name).Range("E6:E8").Address
    ComboBox1.RowSource = Worksheets("Données").Range("E6:E8").Address
End Sub

Cordialement

Je parlais de la propriété RowSource de la combobox1. j'avais mis dans ce champ la réference de la plage contenant les données.

Merci pour ta réponse.

Cordialement,
 
- 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
10
Affichages
282
Réponses
3
Affichages
665
Réponses
4
Affichages
751
Réponses
11
Affichages
1 K
  • Question Question
Microsoft 365 vba
Réponses
14
Affichages
2 K
Retour