Eviter les lignes vierges dans uncombobox

Bonjour tout le monde;

J'ai une liste qui se limite à 100 lignes au maximum Ex: (A1:C100), cette liste change de nombre de lignes à chaque fois , j'ai mis un combobox dans une Userform qui affiche cette liste par la propriété Rowsource ,ma question est la suivante:

Comment éviter les lignes vierges dans le combobox si ma liste source contient moins de 100 lignes ?

Merci !

Bonjour,

Pas très experte en VBA, mais une idée...

Pourquoi pas définir la ComboBox en fonction d'une zone nommée dynamiquement avec la fonction DECALER (laquelle permet de ne prendre en compte que les lignes ayant un contenu).

A creuser sans doute...

Cordialement,

Salut V_Elbie et merci pour votre réponse

A ma connaissance trés limité , la fonction DECALER prend les lignes vides aussi !

si vous avez un exemple à me donner je vous serai trés reconaissant.

Merci!

Bonsoir,

Il faut éviter le ROWSOURCE et utiliser l'instruction ADDITEM.

Suis ce lien pour un exemple --> https://www.excel-pratique.com/forum/viewtopic.php?t=5859

Le mieux est que tu places ton fichier.

Amicalement

Dan

Nad-Dan a écrit :

Le mieux est que tu places ton fichier.

Ok !Dan voila mon fichier : https://www.excel-pratique.com/~files/doc/sans_dounlons.xls

Merci

re,

Ton fichier en retrour.

Pour voir la combo avec les noms, clique sur le bouton sur la feuille 1.

https://www.excel-pratique.com/~files/doc/sans_doublons_1.zip

Amicalement

Dan

Bonjour tout le monde , salut Dan

Je m'excuse, je crois que je me suis mal exprimer

SEBAA a écrit :

Comment éviter les lignes vierges dans le combobox si ma liste source contient moins de 100 lignes ?

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

La combo ne doit contenir que les lignes qui ont un contenu

2gestion-nc.xlsm (78.22 Ko)

Bonjour

sans utiliser de colonne supplémentaire (colonne F), mais en partant de la colonne B :

Private Sub UserForm_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range([B3], [B65000].End(xlUp))
    If c <> "" And Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
End Sub

re

Merci beaucoup felix c'est exactement ce que je voulais

re, salut felix,

ben évidemment SEBAA (code de félix), si tu ne dis pas que l'on peut utiliser la colonne B à la place de la F

Dan

edit : en gardant la liste en colonne F

Private Sub UserForm_Initialize()
'Macro par Dan pour SEBAA
Dim cel As Range, plage As Range
Set plage = Range("F3", Range("F65536").End(xlUp))
For Each cel In plage
    With ComboBox1
    If cel <> "" Then .AddItem cel
    End With
Next
End Sub

Bonjour tout le monde

Merci beaucoup Dan pour votre réponse , vous m'avez sauver avec la déclaration des variables

Autre question s.v.p ...si possible :

Est ce qu'il y a une possibilité d'avoir toute la liste c-a-d les trois colonnes (E3:G3) dans la même combo

Merci!

re,

Remplace le code par celui-ci :

Private Sub UserForm_Initialize()
'Macro par Dan pour SEBAA
Dim cel As Range, plage As Range
Set plage = Range("F3", Range("F65536").End(xlUp))
For Each cel In plage
    With ComboBox1
    If cel <> "" Then .AddItem cel.Offset(0, -1) & " " & cel & " " & cel.Offset(0, 1)
    End With
Next
End Sub

C'est cela que tu veux ?

Amicalement

Dan

Rechercher des sujets similaires à "eviter lignes vierges uncombobox"