Afficher dans une listbox une plage après filtre

Bonjour à tous,

J'ai une BDD qui regroupe tout les infos relatives à des agences. Dans la BDD en colonne "A" il y a la référence (numéro) en "B" le nom de l'agence et plus loin en "H" le nom de la région.

Ma feuille principale (ROOT) a un bouton qui mène à la feuille (Map). Sur cette feuille Map, il y a un carte où tous les région sont des boutons que l'on peut cliquer. Lorsqu'on clique sur une région, cela lance une macro (rangée dans un module) et qui fait un filtre sur la BDD qui va masquer toutes les régions différente que celle sélectionnée en cliquant sur la carte. À la fin de la macro, s'ouvre un UserForm qui aura pour but de consulter, modifier ou supprimer les infos relatives au agence.

À l'initialisation du UserForm, il y a une ListBox1, en 2 colonnes (Ref et nom d'agence) qui dois s'alimenter avec la BDD. La ListBox1 est bien alimentée, mais avec toutes les agence toutes régions confondues et pas uniquement avec les agences visible après le filtre.

Comment faire pour alimenter la ListBox1 uniquement avec les données visibles de la BDD? J'ai, dans mon code, une variante "Dim Tableau_plage_listbox1 As Variant" que je n'arrive pas à setter et je ne sais même pas si cette variante est obligatoire.

Soyez indulgent, ca ne fait qu'une semaine que j'ai les pieds dans le VBA.

Merci d'avance

Private Sub UserForm_Initialize()

    Dim onglet As Worksheet
    Dim derniere_ligne As Long
    Dim Tableau_plage_listbox1 As Variant
    Dim arr_data() As Variant

    Set onglet = Worksheets(3)

    derniere_ligne = onglet.Cells(Rows.Count, 1).End(xlUp).Row

    If derniere_ligne > 1 Then

    arr_data = onglet.Range(onglet.Cells(2, 1), onglet.Cells(derniere_ligne, 2))

    ListBox1.ColumnCount = 2
    frmconsmodsup.ListBox1.ColumnWidths = "20;250"
    ListBox1.List = arr_data

    End If

End Sub

bonsoir

Private Sub UserForm_Initialize()
 Dim onglet As Worksheet
    Dim derniere_ligne As Long
    Dim Tableau_plage_listbox1 As Variant
    Dim arr_data As Range
    Dim area As Range
    Dim i&
    Set onglet = Worksheets(3)

    derniere_ligne = onglet.Cells(Rows.Count, 1).End(xlUp).Row

    If derniere_ligne > 1 Then

        Set arr_data = onglet.Range(onglet.Cells(2, 1), onglet.Cells(derniere_ligne, 2)).SpecialCells(xlVisible).Cells

        With ListBox1
            .ColumnCount = 2
            .ColumnWidths = "20;250"
            For Each area In arr_data.Areas
                For i = 1 To area.Rows.Count
                    .AddItem area.Cells(i, 1): .List(.ListCount - 1, 1) = area.Cells(i, 2)
                Next
            Next
        End With
    End If
End Sub

Merci beaucoup, ca fonctionne à merveille.

Bonne soirée.

Rechercher des sujets similaires à "afficher listbox plage filtre"