Listbox suivant Combobox sans passer par RowSource

cathodique

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

Fichiers joints

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

tashiqi

XLDnaute Occasionnel
Re : Listbox suivant Combobox sans passer par RowSource

Effectivement, je n'avais pas fait attention que toutes les données étaient dans le deuxième onglet xD
mea culpa
 

cathodique

XLDnaute Accro
Re : Listbox suivant Combobox sans passer par RowSource

Je te remercie beaucoup pour ton aide, tes explications et surtout la célérité de ta réactivité.

Encore merci. Grâce à ton intervention mon problème est résolu.

Cordialement,
 

cathodique

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

tashiqi

XLDnaute Occasionnel
Re : Listbox suivant Combobox sans passer par RowSource

(N'hésite pas à ajouter le tag Résolu au sujet)
 

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 Accro
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 Accro
Re : Listbox suivant Combobox sans passer par RowSource [Résolu]

Bonsoir,

Je vous remercie tous pour vos réponse. j'ai noté la discussion mais je ne vois pas où est situé le tag pour mettre résolu.

Cordialement,
 

cathodique

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

Pierrot93

XLDnaute Barbatruc
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour à tous,

Merci, je veux bien mettre que la discussion a abouti et résolu mais où se trouve ce satané Tag. SOS.
pas de "tag" sur ce forum, tu le dis et c'est très bien.... certaint éditent le 1er post en mettant [Résolu] au début de l'objet, mais c'est pas obligatoire...

bonne journée
@+
 

cathodique

XLDnaute Accro
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour Laetitia90,

Je te remercie pour ton code, je viens de le tester mais j'ai une erreur d’exécution 424 Objet requis. au débogage la ligne Userform1.show est surlignée. je n'ai pas compris pourquoi.

Merci quand même.
 

laetitia90

XLDnaute Barbatruc
Re : Listbox suivant Combobox sans passer par RowSource

re tous
perso j'ai pas ce pb.... j'ai teste sur ton fichier

attention .hide ne ferme pas userform il reste charge en memoire mais plus visible.. pour le decharger utiliser Unload Me
 

Fichiers joints

mécano41

XLDnaute Accro
Re : Listbox suivant Combobox sans passer par RowSource

Bonjour Laetitia90,

Je te remercie pour ton code, je viens de le tester mais j'ai une erreur d’exécution 424 Objet requis. au débogage la ligne Userform1.show est surlignée. je n'ai pas compris pourquoi.


Merci quand même.
Bonjour,

Brièvement (par tél) A l'apparition du surlignage,il faut faire F8 pour aller en pas-à-pas jusqu'au point fautif...

Cordialement
 

cathodique

XLDnaute Accro
Re : Listbox suivant Combobox sans passer par RowSource

bonsoir laetitia90, mecano, à tout le monde,

En effet, je constate que ton code fonctionne bien, j'ai dû faire une erreur. merci beaucoup.

Merci aussi pour l'astuce du pas à pas.


Bonne soirée!

Cordialement,
 

Discussions similaires


Haut Bas