Population de ListBox selon critères spécifiques
Bonjour,
j'utilise Excel comme base de donnée. J'essaie maintenant de limiter les actions des utilisateurs directement dans la grille pour les forcer, plutôt, à passer par un GUI.
Chaque ligne représente un dossier, et j'ai une centaine de colonnes pour les différentes informations.
J'essaie de faire apparaître, dans le ListBox d'un Userform, les dossiers devant être traités. Le statut d'un dossier est présent à la colonne CC (ou position 81) sous la forme "True or False".
J'ai déjà pu trouver, sur Internet, ce code pour importer les informations dans la ListBox. Le problème, c'est que ça importe absolument tout. Je n'arrive pas à imposer une contrainte du genre: "Pour apparaître dans la ListBox1, la valeur présente à la colonne "CC" doit = False.
Private Sub UserForm_Initialize()
'Author : Ken Puls (http://www.excelguru.ca)
'Macro Purpose: To populate a multi-column listbox with data from
' a worksheet range
Dim lbtarget As msforms.ListBox
Dim rngSource As Range
'Set reference to the range of data to be filled
Set rngSource = Worksheets("Principal").Range("A7:E50")
'Fill the listbox
Set lbtarget = Me.ListBox1
With lbtarget
'Determine number of columns
.ColumnCount = 5
'Set column widths
.ColumnWidths = "50;50;50;100;100"
'Insert the range of data supplied
.List = rngSource.Cells.Value
End With
End SubJ'ai appris sur le tas jusqu'à présent, mais je n'arrive pas à trouver quelle ligne de code ou commande utiliser pour que rngSource ne contienne que des lignes spécifiques.
Merci pour votre aide!
Bonjour
Comme je ne sais si la propriété List accepte les zones discontinues
Essayes ce code
Private Sub UserForm_Initialize()
Dim Ws As Worksheet
Dim J As Long
Dim I As Integer
Set Ws = Worksheets("Principal")
With Me.ListBox1
'Determine number of columns
.ColumnCount = 5
'Set column widths
.ColumnWidths = "50;50;50;100;100"
For J = 7 To Ws.Range("A" & Rows.Count).End(xlUp).Row
' Cellule vide = False
If Ws.Range("CC" & J) <> "" And Ws.Range("CC" & J) = False Then
.AddItem Ws.Range("A" & J)
For I = 1 To 4
.List(.ListCount - 1, I) = Ws.Cells(J, I + 1)
Next I
End If
Next J
End With
End SubJe suis bouche-bée! J'ai du mal avec les "count" et je me rends bien compte que ça me nuit énormément.
Ça fonctionne à merveille, merci infiniment!
Simon