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é ! j'ai introduit une erreur, MultiSelect ne concerne que la ListBox, donc ListIndex identifie toujours l'élément sélectionné dans une ComboBox, alors que dans une ListBox à multisélection, il n'identifie que le dernier élément sélectionné et n'est d'aucune utilité pour recueillir l'ensemble des éléments qui l'ont été et doivent être testés avec Selected. Je devais avoir encore quelques effets résiduels d'anesthésie, mais par contre ce que j'ai dit sur Value est exact.

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... (un peu loupé, dès lors que j'introduis moi-même une erreur ! mais cela n'empêche pas de poursuivre le tour...)

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+

Rechercher des sujets similaires à "combobox incomplete"