Alimenter plusieures listbox à partir de feuilles distinctes

  • Initiateur de la discussion Initiateur de la discussion mfb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mfb

XLDnaute Occasionnel
Bonsoir à tous,
J'ai bien trouvé quelques exemples dans la bible (Forum) mais je n'ai pas réussi
à les adapter à mon besoin à savoir :

Alimenter, via une boucle,3 listbox à partir de 3 feuilles distinctes
soit dans mon exemple alimenter la listbox2 à partir de la feuille Bleu,
la listbox4 à partir de la feuille Rouge et la listbox5 à partir de la feuille Vert.

Les Lisbox s'affichent à l'ouverture de l'USf (Initialise)
le message d'erreur "membre de méthode ou données introuvables" s'affiche.

Nul doute qu'il s'agit d'une erreur de débutant.
Alors merci par avance pour votre aide.
Le petit fichier exemple est joint.

A+
Daniel
 
Re : Alimenter plusieures listbox à partir de feuilles distinctes

re bonsoir,

Code:
Private Sub UserForm_Initialize()
    Dim Nom As String
    Dim Tablo As Variant
    For s = 1 To 3
        Nom = Array("Bleu", "Rouge", "vert")(s - 1) 'Tableau de base 0 
        With Sheets(Nom)
            Tablo = .Range(.Cells(6, 5), .Cells(15, 6))
        End With
        With UserForm1.Controls("Listbox" & s)
            .ColumnCount = 2
            .ColumnWidths = "60;60"
            .List = Tablo
        End With
    Next
End Sub

P.S. 3 feuilles et 5 ListBox???
A+
 
Re : Alimenter plusieures listbox à partir de feuilles distinctes

Re,
Pourquoi 3 feuilles et 5 listbox et tout simplement parce que mon fichier définitif
comportera 5 feuilles et 5 listbox.
Je ne devrai pas avoir de Pb pour adapter le code.
Pour que ça marche il a fallu ajouter la déclaration de la variable s.
Alors MERCI Hasco pour cette aide aussi précieuse que rapide.
Bonsoir à tous
Daniel
 
Re : Alimenter plusieures listbox à partir de feuilles distinctes

Bonsoir à tous
Une variante avec des Tableaux sur les 3 Feuilles Bleu - Rouge - Vert
Code:
Option Explicit
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim lstObj As ListObject
Dim s
Dim Nom As String
Dim nbcol As Integer
Dim Tablo As Variant
    For s = 1 To 3
    Nom = Array("Bleu", "Rouge", "vert")(s - 1) 'Tableau de base 0
    Set lstObj = Worksheets(Nom).ListObjects(1)
    Set Plage = lstObj.DataBodyRange.Cells
    nbcol = lstObj.HeaderRowRange.Count
    Tablo = Plage
        With UserForm1.Controls("Listbox" & s)
            .ColumnCount = nbcol
            .ColumnWidths = "60;60"
             .List = Tablo
         End With
     Next
 End Sub
Ainsi si tu rajoutes des colonnes ou des lignes à tes tableaux dans les feuilles,
Les ListBox s'adaptent
A+
 

Pièces jointes

Re : Alimenter plusieures listbox à partir de feuilles distinctes

Bonsoir à Tous, mfb
Encore une autre variante, pour alimenter les ListBox avec Rowsource
Et obtenir les titres en 1ère ligne.
La largeur des colonnes sont également automatique

Code:
Option Explicit
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim lstObj As ListObject
Dim s, x
Dim temp
Dim Nom As String
Dim nbcol As Integer
Dim Tablo As Variant
    For s = 1 To 3
    Nom = Array("Bleu", "Rouge", "vert")(s - 1) 'Tableau de base 0
    Set lstObj = Worksheets(Nom).ListObjects(1)
    Set Plage = lstObj.DataBodyRange.Cells
    'xxxxxxxxxxxxxxxxxxxxxxxx
    'Activer la ligne ci-dessous pour alimenter La ListBox avec .List
    'Tablo = Plage
    'xxxxxxxxxxxxxxxxxxxxxxxx
    nbcol = lstObj.HeaderRowRange.Count
    
     'xxxxxxxxxxxxxxxxxxxxxxxx
    'Activer la ligne ci-dessous pour alimenter La ListBox avec .Rowsource
    Tablo = lstObj.Parent.Name & "!" & lstObj.DataBodyRange.Address
    'xxxxxxxxxxxxxxxxxxxxxxxx
  'MsgBox Tablo
    
        With UserForm1.Controls("Listbox" & s)
            .ColumnHeads = True
            .ColumnCount = nbcol
            '.ColumnWidths = "60;60"
            '.List = Tablo
             .RowSource = Tablo
                For x = 1 To nbcol
            temp = temp & lstObj.DataBodyRange.Columns(x).Width * 0.9 & ";"
        Next
        .ColumnWidths = temp
             
             
         End With
     Next
 End Sub
Bonne soirée
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour