Liste déroulante récalcitrante

Bonjour tout le monde,

Toujours dans l'optique d'apprendre le VBA, j'ai suivi ce tuto:

https://www.youtube.com/watch?v=c915dz6y9jY

Je ne comprend pas pourquoi lorsque je sélectionne un nom de joueur ("joueur02") par exemple: dans la combobox "Nom", la listebox "Choix m'affiche tout les prénoms de la colonne.

Quand je choisi ("joueur03") elle m'affiche la colonne sexe....!

Et quand je choisi ("joueuse04") elle m'affiche une "erreur d'exécution '6' Dépassement de capacité" et bloque sur la ligne surlignée.

Mon code:

Private Sub ComboBox_Nom_Change()

Dim i As Integer

' Zone de liste vidée (sinon les noms sont ajoutés à la suite)

ListBox_Choix.Clear

Dim no_colonne As Integer, nb_lignes As Integer

' Numéro de la sélection (ListIndex commence à 0) :

no_colonne = ComboBox_Nom.ListIndex

' Nombre de lignes de la colonne du nom choisi

nb_lignes = Cells(1, no_colonne).End(xlDown).Row

For i = 2 To nb_lignes '=> pour lister les Prénoms

ListBox_Choix.AddItem Cells(i, no_colonne)

Next

End Sub

Avez-vous un solution pour moi et surtout une explication pour que je puisse comprendre ?

Merci de votre temps à m'enseigner.

Mon fichier joint

Bonjour Excelleurs(es), et à toi atlonia,

alors ton code il y a une erreur sur ce que tu souhaites faire.

Private Sub ComboBox_Nom_Change()
Dim i As Integer

' Zone de liste vidée (sinon les noms sont ajoutés à la suite)
ListBox_Choix.Clear

Dim no_colonne As Integer, nb_lignes As Integer

' Numéro de la sélection (ListIndex commence à 0) :
no_colonne = ComboBox_Nom.ListIndex
' Nombre de lignes de la colonne du nom choisi
nb_lignes = Cells(1, no_colonne).End(xlDown).Row' tu mets no_colonne encore ici d'où dépassement pour ton erreur sur joueur04

For i = 2 To nb_lignes '=> pour lister les Prénoms
ListBox_Choix.AddItem Cells(i, no_colonne) ' ici tu mets no_colonne prend la position de ton choix donc tu fais un choix sur les colonnes que tu souhaites te possitionné de A à F  ou en vba  0 à 6
Next

End Sub

Re atlonia,

ce que j'ai supprimé la variable no_colonnes, ainsi quand tu choisis dans ta combox sa t'affiche tous les prénoms

Private Sub ComboBox_Nom_Change()
Dim i As Integer

' Zone de liste vidée (sinon les noms sont ajoutés à la suite)
ListBox_Choix.Clear

Dim nb_lignes As Integer

' Nombre de lignes de la colonne du nom choisi
nb_lignes = Cells(1, 1).End(xlDown).Row

For i = 2 To nb_lignes '=> pour lister les Prénoms
ListBox_Choix.AddItem Cells(i, 2)
Next

End Sub

si tu souhaites te positionner devant le choix que tu as fait dans combobox ce code permet de le faire:

Private Sub ComboBox_Nom_Change()
Dim i As Integer

' Zone de liste vidée (sinon les noms sont ajoutés à la suite)
ListBox_Choix.Clear

Dim pos As Integer, nb_lignes As Integer

' Numéro de la sélection (ListIndex commence à 0) :
pos= ComboBox_Nom.ListIndex
' Nombre de lignes de la colonne du nom choisi
nb_lignes = Cells(1, 1).End(xlDown).Row

For i = pos To nb_lignes '=> pour lister les Prénoms
ListBox_Choix.AddItem Cells(i, 2)
Next

End Sub

Merci medas,

déjà une bonne chose de faite.

ça fonctionne bien...!

mais, d'après ce que j'ai compris, la listebox ne devrais m'afficher que les prénoms des joueurs portant le même nom (mari, femme, enfants...)

Peut-être une autre idée lumineuse pour m'aider ?

Bonjour Atlonia, Excelleurs(es),

Alors pour afficher :

la listebox ne devrais m'afficher que les prénoms des joueurs portant le même nom (mari, femme, enfants...)

mais je ne vois pas sur ton tableau, juste sexe tireur pointeur et les noms sont tous différents il y a pas de doublons

mais pour répondre à ta question

Il faut une condition dans ta boucle.

Cordiales

Bonjour medas,

Un grand merci a toi, et toutes mes excuses pour cette réponse tardive...

Mais j'étais plongé sur mes lectures VBA sur le Web et les tutos que je trouvais pour évoluer et j'en ai oublié de remercier comme il se doit les personnes qui m'on aidé.

J'espère que tu ne m'en tiendras pas rigueur

A+ j'espère sir de nouveaux post.

Rechercher des sujets similaires à "liste deroulante recalcitrante"