Alimenter plusieures listbox à partir de feuilles distinctes

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
 
G

Guest

Guest
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+
 

mfb

XLDnaute Occasionnel
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
 

Regueiro

XLDnaute Impliqué
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

  • XLD_Alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    27.7 KB · Affichages: 40
  • XLD_Alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    27.7 KB · Affichages: 41
  • XLD_Alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    27.7 KB · Affichages: 40

Regueiro

XLDnaute Impliqué
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

  • XLD_alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    28.6 KB · Affichages: 32
  • XLD_alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    28.6 KB · Affichages: 38
  • XLD_alimenter-plusieures-listbox-partir-de-feuilles-distinctes-alim_listbox_1.xlsm
    28.6 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN