Combobox incomplète ?
Bonjour à tout le forum,
J'ai une combobox (cbo_Ville) dépendante d'une autre (cbo_CP).
tout fonctionne bien, sauf que la cbo_Ville ne m'affiche rien en regard du dernier CP......
Si je rajoute des CP et des villes dans ma feuille "Datas" c'est toujours la dernière ligne qui faute.
Je pense que l'erreur vient de cette ligne:
If oCell.Value = CInt(Me.cbo_CP) Then Me.cbo_Ville.AddItem UCase(oCell.Offset(0, 1).Value)
Mais près plusieurs tentatives, je n'ai pas su la modifier...
Sauriez-vous m'aider ?
Merci à tous...
Mon fichier joint:
Bonjour
Un essai à tester. Te convient-il ?
Bye !
Bonjour
mettre cbo_CP.ListIndex = -1 a la fin Private Sub UserForm_Initialize()
' Boucle sur les cellules de la plage A2 jusqu'? la derni?re ligne
For Each oCell In oSheet.Range("A2:A" & iDerlig)
' pour alimenter le ComboBox
Me.cbo_CP = oCell
' remplissage sans doublon
If Me.cbo_CP.ListIndex = -1 Then Me.cbo_CP.AddItem oCell
Next oCell
cbo_CP.ListIndex = -1
A+
Maurice
Bonsoir gmb et archer,
Vos 2 solutions remplissent parfaitement leur rôle...
encore une fois, pourquoi faire simple quand on peut faire compliqué...lol...
Pour ceux que ça intéresse, la solution de gmb supprime une boucle qui n'avait guère d'intérêt, puisqu'il n'est possible d'afficher qu'un seul code postal dans la combobox, mais toutes les villes qui ont ce même CP s'affichent elles dans la combobox ville.
Et pour étayer la solution de archer, j'ai trouvé ceci:
La propriété ListIndex correspond au n° de la sélection dans la liste (contrairement à Value qui correspond à la valeur), à noter que ListIndex commence à 0.
dans les cours gratuits de ce site...
Merci encore à vous deux...
A+
Bonsoir, Salut à tous !
Je me permet au passage :
Et pour étayer la solution de archer, j'ai trouvé ceci:
La propriété ListIndex correspond au n° de la sélection dans la liste (contrairement à Value qui correspond à la valeur), à noter que ListIndex commence à 0.
dans les cours gratuits de ce site...
Si écrit ainsi, sans autre élément, ce n'est pas tout à fait exact : ListIndex définit la ligne sélectionnée, sauf en cas de multisélection, et Value fournit la valeur de la colonne désignée par BoundColumn, qui peut ne pas être la valeur affichée.
Cordialement.
Bonjour MFerrand,
Peux-tu développer un peut plus :
Si écrit ainsi, sans autre élément, ce n'est pas tout à fait exact : ListIndex définit la ligne sélectionnée, sauf en cas de multisélection, et Value fournit la valeur de la colonne désignée par BoundColumn, qui peut ne pas être la valeur affichée.
J'ai du mal à comprendre...
Merci d'être toujours là pour partager ton savoir...
Bonjour
voila 2 combobox et j'espère en claire pour toi
et évite de renommer tes Objets
a oui mettre les cellules en texte
A+
Maurice
Option Explicit
Dim L&
Private Sub UserForm_Initialize()
With Feuil2 ' = CodeName de l'onglet "Datas"
For L = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
ComboBox1.Value = .Cells(L, 1).Text
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Cells(L, 1).Text
Next
End With
ComboBox1.ListIndex = -1
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then Exit Sub
ComboBox2.Clear
With Feuil2
For L = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(L, 1).Text = ComboBox1.Value Then ComboBox2.AddItem .Cells(L, 2).Value
Next
End With
End Sub
Désolé !
Si tu n'as jamais ouvert l'Aide VBA (ou même si tu l'as déjà eu fait), tu l'ouvres, tu tapes ComboBox, ce qui te permettra d'accéder à la définition de l'objet.
Tu commenceras déjà à trouver quelques indications
A partir de l'article tu peux accéder à ses différentes propriétés, à commencer par ListIndex, puis utilement Value, Text, BoundColumn et TextColumn pour voir les relations entre ces diverses propriétés, notamment dans les cas de listes multicolonnes. On pourra en parler ultérieurement si tout cela ne te paraît pas suffisamment clair...
Bonne journée.
NB- Mon objectif était de ne pas te laisser te lancer comme un boulet dans des affirmations un peu trop péremptoires, sans avoir avoir fait le tour des caractéristiques susceptibles d'intervenir...
Merci archer,
merci pour ton code, Je ne suis pas encore parfaitement à l'aise avec la lecture VBA, mais je m'entraîne, et en y mettant le temps qu'il faut, j'arrive avec votre aide à tous à le déchiffrer.
C'est pour ça, d'ailleurs que je commente encore beaucoup mon code, ça m'aide bien à m'y retrouver.
Si je renomme mes objets, c'est également par soucis de facilité, car je trouvais fastidieux de jongler entre le UserForm et le code pour retrouver à quel champ correspondait telle ou telle textbox quand c'est le cas comme dans mon projet
Pour les feuilles, je peux comprendre, car j'ai en visuel l'explorateur de projet en rappel.
d'autre part, beaucoup de sites ou de tutoriels proposent ou conseillent de le faire...
Y-a-t'il un intérêt à ne pas le faire ?
Merci de m'exposer tes arguments...
Merci MFerrand,
Je suis toujours curieux de tes conseils et de tes explications approfondies.
Bien sur que j'ai déjà ouvert l'aide VBA à plusieurs reprises, mais ce n'est pas encore devenu un automatisme, je vais m'astreindre à y penser plus souvent...
Car c'est vrai que ça m'aidera à avancer plus vite, plutôt que de chercher de manière empirique comme je le fais sur le Web.
Merci encore et a+