J'ai un userform a trois listbox, sur la première listbox, je souhaiterais voir uniquement les lignes de couleur jaune.
Suivant la sélection sur la listbox1 (exemple GROS_OEUVRE_MACONNERIE ), sur la listbox2 s'affiche les lignes de couleur verte comprises entre 78 et 224, cette plage étant variable suivant le nombres de lignes sous la ligne jaune du titre.
Quand sélection sur la listbox2, la listbox3 doit afficher le contenu compris en dessous de la sélection de la ligne de couleur verte (exemple INSTALLATION DE CHANTIER plage de sélection comprise entre 79 et 88) également variable.
j'espère avoir été le plus clair possible dans mon explication.
Re : Listbox remplis sous condition de ligne de couleur
Bonsoir Thierry, Papou-net, le forum,
J'ai trouvé, excuser moi pour le post, voir code ci-dessous
excuser moi, mais étant pas mal débordé je n'ai pu répondre plus tôt.
Thierry dans ta procédure listbox3 pour afficher les infos en listbox4, j'ai voulu me servir de la procédure de la listbox3 pour afficher d'autres infos en listbox5, cet a dire si on prend un exemple avec GROS OEUVRE, IMPLANTATION, on a 3 sous rubriques (implantation 4 axes, 6 axes et 8 axes, ces sous rubriques ont aussi des rubriques que je met en colonne K4:O4.
comme ceci
Implantation de bâtiment 4 axes, compris fourniture et mise en place des chaises, traçage et repérage des niveaux.
Chevrons - ml - 6 - 12 - 25
planches - m2 - 25 - 10- 20
clous - kg - 1,5- 2 - 2,5
piquet - u - 25 - 30 - 40
paquet -u -11- 21- 31
marteau -p -12 -13 -14
j'utilise donc ton code que j'ai modifié comme suit,
Code:
Private Sub CommandButton5_Click()
Dim Lib As Range
Dim Lg As Long, LB4Lg As Integer, LBxLg As Integer
Dim n As Byte
Dim WS As Worksheet, WSFound As Worksheet
'Application.ScreenUpdating = False
ListBox5.Clear
For Each WS In ThisWorkbook.Worksheets
If InStr(WS.Name, (Trim(Left(CStr(Me.ListBox1.Value), 29)))) <> 0 Then
Set WSFound = WS
End If
Next
If WSFound Is Nothing Then
MsgBox "La Feuille " & CStr(Me.ListBox1.Value) & " n'existe pas !", vbCritical
Exit Sub
End If
With WSFound
.Activate
Set Lib = .Range("K:K").Find(Trim(ListBox4.Value), LookIn:=xlValues)
If Lib Is Nothing Then Exit Sub Else Lg = Lib.Row + 1
LBxLg = 0
While Not .Cells(Lg, 11).Value = ""
ListBox5.AddItem (.Cells(Lg, 11).Value)
For n = 12 To 15
ListBox5.List(LB4Lg, n -11) = (.Cells(Lg, n).Value)
Next
Lg = Lg + 1: LB4Lg = LB4Lg + 1
Wend
End With
Application.ScreenUpdating = False
End Sub
Mais comme en colonne B:B il y a parfois des ligne vides, ces lignes se répercutent sur les données qui doivent s'afficher en listbox5 et donc vide aussi.
Je n'arrive pas a trouver la solution en jouant sur le numéros de colonne, une aide et explication serais la bien venu.