Listbox suivant Combobox sans passer par RowSource

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

  • ComboBox_TextBox.xls
    43.5 KB · Affichages: 64

tashiqi

XLDnaute Occasionnel
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 :)
 

cathodique

XLDnaute Barbatruc
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,
 

tashiqi

XLDnaute Occasionnel
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 :)
 

laetitia90

XLDnaute Barbatruc
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
 

cathodique

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

mécano41

XLDnaute Accro
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
 

cathodique

XLDnaute Barbatruc
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:

Dranreb

XLDnaute Barbatruc
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
 

cathodique

XLDnaute Barbatruc
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,
 

Discussions similaires

Réponses
4
Affichages
470

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata