Supprimer les vides d'une liste déroulante avec VBA

Bonjour à tous,

Voila mon problème :

J'ai une petite macro très utile qui me recopie quelques cellules venant d'une ligne se trouvant sur un autre onglet.

J'ai rajoutée a cette manip. trois listes déroulantes qui font référence à un autre onglet de base de donnée.

L'onglet base de donné se présente comme sa :

A B C

Type 1

Sous détail 1

Renseignement 11

Renseignement 12

Rens....ETC

Sous détail 2

Renseignement 21

Renseignement 22

Type 2

Sous détail... ETC ETC

ETC Etc....

Mon soucis et que bien entendu dans mes listes déroulantes il y a plein de vide ....

Que je souhaiterais supprimer...à l'aide d'une fonction ou d'une macro peut importe

Je sais que l’on peut le faire en passant par autre plage intermédiaire qui supprime les vides mais cette méthode la ne m'intéresse pas

Si vous avez la solution ! merci d'avance


Oups c'est pas compréhensible ! dans mon texte les vides qui montrait l'emplacement des données dans les colonnes ABC ! ont été supprimés!! LOL le comble!

Ci après je remplace les vides par des tirets :

A---------------- B ------------- C

Type 1

  • -------------Sous détail 1
  • -----------------------------Renseignement 11
  • -----------------------------Renseignement 12
  • -----------------------------Rens....ETC
  • -------------Sous détail 2
  • -----------------------------Renseignement 21
  • -----------------------------Renseignement 22

Type 2

--------------Sous détail... ETC ETC

ETC Etc....

Bonjour,

En VBA, on peut utiliser un dictionnaire par ex (la méthode la + simple)

  Set d= CreateObject("Scripting.Dictionary")
  For Each c In Range("a2", [a65000].End(xlUp))
    If c<>"" then d(c.Value) = ""
  Next c
  Me.ComboBox1.List=d.keys

Ceuzin

Bonjour,

Une piste à adapter :

Private Sub UserForm_Initialize()

    Dim Plage As Range
    Dim Tbl()
    Dim I As Integer
    Dim J As Integer

    With Worksheets("Feuil1")

        Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

    End With

    For I = 1 To Plage.Count

        If Plage(I).Value <> "" Then

            J = J + 1
            ReDim Preserve Tbl(1 To J)
            Tbl(J) = Plage(I)

        End If

    Next I

    Me.ComboBox1.List = Tbl

End Sub
Rechercher des sujets similaires à "supprimer vides liste deroulante vba"