Lignes vides dans un combobox

Salut le forum,

j'ai un combobox dans un usf qui couvre la plage h2:h400. Mon problème est qu'il n'y a pas de donnée dans toute cette plage pour le moment. Les données sont enregistrées au fur et à mesure. J'aimerais ne pas voir les lignes vides dans le choix de mon combobox. Il ne peut y avoir de ligne vide entre les données. Elles sont toutes à la fin.

Merci pour votre aide.

Bonsoir,

Eric, tu n'as jamais entendu parler des zones nommées dynamiques?

avec une formule du style :

=DECALER(Feuil1!$H$2;;;NBVAL(Feuil1!$H:$H)-1)

en français, ce qui en anglais, devrait donner (suis pas sûr des virgules ou points-virgules.....

=OFFSET(Feuil1!$H$2;;;COUNTA(Feuil1!$H:$H)-1)

Le moins 1 en fin de formule si tu as un en-tête de colonne en H1, sinon, enlève-le

Et ensuite, dans ta RowSource, tu mets le nom que tu as défini, par Insert/Name......

D'accord felix, je vais essayer ça.

C'est juste que j'avais lu quelque part qu'il était préférable de ne pas utiliser le RowSource.

Je reviens là-dessus.

Impeccable felix!

Je ne savais pas que ça pouvait être appliqué de cette façon. Il faut dire que je n'utilise pas assez les noms pour désigner des plages.

Merci encore!

Re-,

petit exemple, avec 2 chargements possibles

le premier, avec RowSource

le deuxième, sans doublons, avec List, et objet Dictionnary

https://www.excel-pratique.com/~files/doc/exemple_combo_ericF.xls

Re,

Est-il possible d'obtenir le même résultat en considération que la cellule voisine est à 1 ou à 0?

Par exemple, obtenir dans le combobox, les éléments en colonne H qui ont comme valeur associée la valeur 0 en colonne i ?

Re-,

essaie ce code :

Dim Cel As Range
Private Sub ComboBox2_DropButtonClick()
Set Titres = CreateObject("Scripting.Dictionary")
    For Each Cel In [titre]
        If Not Titres.Exists(Cel.Value) And Cel.Offset(0, 1).Value = 0 Then Titres.Add Cel.Value, Cel.Value
    Next Cel
Me.ComboBox2.List = Application.Transpose(Titres.items)
End Sub
Private Sub UserForm_Initialize()
With Sheets("Feuil1")
    Derlig = .[H65000].End(xlUp).Row
    .Range("H2:H" & Derlig).Name = "titre"
End With
End Sub

Re,

ça fonctionne bien tant et aussi longtemps que j'ai au moins un résultat avec la valeur 0 associée. Dès qu'il n'y a plus de 0 dans la colonne i, j'ai un bug.

Re-,

  • ça fonctionne bien tant et aussi longtemps que j'ai au moins un résultat avec la valeur 0 associée. Dès qu'il n'y a plus de 0 dans la colonne i, j'ai un bug.

ta question :

  • obtenir dans le combobox, les éléments en colonne H qui ont comme valeur associée la valeur 0 en colonne i

????????????????????????

On fait quoi?

Re felix,

c'est juste qu'il est tout de même possible qu'il n'y en ait pas. Ce qui veut dire alors que mon combobox ne contient rien. Il a une liste vide. Ou pas de liste du tout pour être plus juste.

Re,

ainsi?

Dim Cel As Range, Titres As Object
Private Sub ComboBox2_DropButtonClick()
Set Titres = CreateObject("Scripting.Dictionary")
    For Each Cel In [titre]
        If Not Titres.Exists(Cel.Value) And Cel.Offset(0, 1).Value = 0 Then Titres.Add Cel.Value, Cel.Value
    Next Cel
If Titres.Count > 0 Then Me.ComboBox2.List = Application.Transpose(Titres.items)
End Sub
Private Sub UserForm_Initialize()
With Sheets("Feuil1")
    Derlig = .[H65000].End(xlUp).Row
    .Range("H2:H" & Derlig).Name = "titre"
End With
End Sub

Remarque le Titres.Count, qui te mettra tes données dans le Combo, s'il existe plus d'une donnée

Voilà! On y est!

Merci beaucoup pour l'aide apportée felix. Je peux maintenant passer à la question suivante mais ça, c'est un autre post.

Rechercher des sujets similaires à "lignes vides combobox"