Autres Problème d'adaptation du contenu d'une listbox

  • Initiateur de la discussion Initiateur de la discussion bernard_metz
  • 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 !

bernard_metz

XLDnaute Nouveau
Bonjour à tous,

Je sèche sur ce code:

Private Sub RemplirListBox()
Dim i As Long, col As Long
Dim firstRow As Long, lastRow As Long
Dim val As Variant
firstRow = 13
lastRow = ws.Range("A1") + 13
With Me.DF_LISTE_ELEMENTS
.RowSource = ""
.Clear
.ColumnCount = 16
.ColumnWidths = "40;40;40;40;40;40;40;40;40;40;40;40;40;40;40;40"
For i = firstRow To lastRow
If ws.Cells(i, 2).Value = Critere_1 Then
.AddItem ""
For col = 0 To 9
.List(.ListCount - 1, col) = ws.Cells(i, col + 1).Value
Next col
.List(.ListCount - 1, col) = "ok"
End If
Next i
End With
End Sub

Dès que je veux écrire quelque chose dans le colonne 10 j'ai une erreur 380
 
Bonjour Bernard,
je pense que tu ne peux pas remplir ta ListBox avec une procédure Additem car ta ListBox a plus de 10 colonnes !
tu devrais trouver des explications sur le Forum !
Bonne fin de Journée
Jean marie
edit : Bonjour Gérard !
ce qui pourrait fonctionner avec 10 colonnes :
VB:
Private Sub RemplirListBox()
Dim i As Long, col As Long
Dim firstRow As Long, lastRow As Long
Dim val As Variant
firstRow = 2
lastRow = 13
With Userform1.DF_LISTE_ELEMENTS
.Clear
.ColumnCount = 10
.ColumnWidths = "40;40;40;40;40;40;40;40;40;40" ';40;40;40;40;40;40"
For i = firstRow To lastRow
If Feuil1.Cells(i, 2).Value = "Critere_1" Then
.AddItem ""
For col = 0 To 8
.List(.ListCount - 1, col) = Feuil1.Cells(i, col + 1).Value
Next col
.List(.ListCount - 1, col) = "ok"
End If
Next i
End With
End Sub
sans fichier et avec si peu d'explication ou exemple .......
 
Dernière édition:
J'ai compris... .AddItem "" ne permet pas de gérer au delà de 10 colonne

??? Ce code là fonctionne mais ne m'affiche pas les titres sur la première ligne ???

Private Sub RemplirListBox()
Dim i As Long, j As Long
Dim firstRow As Long, lastRow As Long
Dim result() As Variant
Dim rowCount As Long
Dim tempRow(1 To 16) As Variant
firstRow = 13
lastRow = ws.Range("A1").Value + 13
rowCount = 0
' Balayage pour compter les lignes correspondantes
For i = firstRow To lastRow
If ws.Cells(i, 2).Value = Critere_1 Then
rowCount = rowCount + 1
ReDim Preserve result(1 To rowCount)
For j = 1 To 16
tempRow(j) = ws.Cells(i, j).Value
Next j
result(rowCount) = tempRow
End If
Next i
' Transfert vers un tableau 2D pour .List
If rowCount > 0 Then
Dim finalArray() As Variant
ReDim finalArray(0 To rowCount - 1, 0 To 15)
For i = 1 To rowCount
For j = 1 To 16
finalArray(i - 1, j - 1) = result(i)(j)
Next j
Next i
With Me.DF_LISTE_ELEMENTS
.Clear
.ColumnCount = 16
.ColumnWidths = "80;0;0;0;50;80;25;25;80;120;80;80;60;60;50;80"
.ColumnHeads = True
.List = finalArray
End With
End If
End Sub
 
Hello,
avec une Listview, il n'y a plus cette limitation et on peut mettre des en-têtes de colonnes :
DemoListView.gif


Ami calmant, J.P
 
- 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

Réponses
10
Affichages
411
Réponses
5
Affichages
507
Réponses
5
Affichages
360
Réponses
4
Affichages
380
Réponses
3
Affichages
757
Retour