Plus de 10 column dans le tableau
Bonjour tout le monde,
Présentement je travaille sur un fichier d'inventaire et j'aimerais faire un tableau dans un listbox avec le contenue de la base de données créé dans une feuille.
Mais je ne comprends pas comment faire pour avoir plus de 10 column dans le listbox, présentement vous aller me dire mais sur la capture d'écran il y en a moins que dix, c'est normal il y en a des cacher. Dans la BD j'ai l'équivalent de 20 à 30 column.
Voici le code en question je mets aussi la capture d'écran pour comprendre.
Private Sub ListBoxinventaireint_Click()
Dim i As Integer
Me.ListBoxinventaireint2.Clear
Application.ScreenUpdating = False
With Sheets("BDJ")
.Range("B2").AutoFilter
.Range("B2").AutoFilter field:=2, Criteria1:=Me.ListBoxinventaireint.Value
If pl.SpecialCells(xlCellTypeVisible).Rows.Count > 0 Then
For Each cel In pl.SpecialCells(xlCellTypeVisible)
With Me.ListBoxinventaireint2
.AddItem cel.Value
For i = 1 To 9
.Column(i, .ListCount - 1) = cel.Offset(0, i)
Next i
.Column(9, .ListCount - 1) = cel.Row
End With
Next cel
End If
.Range("B2").AutoFilter
End With
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Dim dico As Object
Dim dl As Integer
Set dico = CreateObject("Scripting.Dictionary")
With Sheets("BDJ")
If .AutoFilterMode Then
End If
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
Set pl = .Range("B2:B" & dl)
End With
For Each cel In pl
dico(cel.Value) = ""
Next cel
Me.ListBoxinventaireint.List = dico.keys
End SubMerci de votre aide.
En passant je me suis lancer dans un gros projet mais ci certain aurais une curiosité absolue il me ferait plaisir de le partager.
bonjour
donne un modèle de ta base pour voir si on peux faire une listview a la place de la listbox
A+
Maurice
Bonsoir,
Exemple de ListBox avec plus de 10 colonnes
Option Compare Text
Dim f, BD, ColVisu(), Ncol
Private Sub UserForm_Initialize()
Set f = Sheets("BD")
ColVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12) ' Colonnes à visualiser (adapter)
Ncol = UBound(ColVisu) + 1
BD = f.Range("A2:L" & f.[A65000].End(xlUp).Row) ' adapter
'---- Contenu ListBox initial
Dim Tbl(): ReDim Tbl(1 To UBound(BD), 1 To Ncol)
For i = 1 To UBound(BD)
c = 0
For Each k In ColVisu
c = c + 1: Tbl(i, c) = BD(i, k)
Next k
Next i
Me.ListBox1.List = Tbl
End SubCeuzin
Bonsoir,
Utilises la propriété "RowSource" et tu auras autant de colonnes que tu veux ! Une piste à adapter :
Private Sub UserForm_Initialize()
Dim Plage As Range
Set Plage = DefPlage(ActiveSheet, 1, 1)
If Plage Is Nothing Then Exit Sub
ListBox1.ColumnCount = Plage.Columns.Count
ListBox1.RowSource = Plage.Address
End Sub
Function DefPlage(Fe As Worksheet, L As Long, C As Long) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function