XL 2016 COULEUR LIGNE DANS LISTBOX

KTM

XLDnaute Impliqué
Bonjour Forum
Ma preoccupation du jour :
J'ai une listbox multicolonnes sur un userform qui affiche les donnees d'une table de 10 colonnes.
Les donnees de la colonne 9 sont soit "Stable" soit "Non_Stable"
J"aimerais mettre en couleur dans ma listbox les lignes contenant le mot "Stable"
Je l'ai fait sur ma table sans problemes mais je voudrais le faire ressortir sur ma listbox. Est_ce possible ?
Merci à tous
 

job75

XLDnaute Barbatruc
Cela dit si l'on veut mettre les lignes en surbrillance par sélection multiple aucun problème, voyez le fichier joint et le code de l'USF :
VB:
Private Sub UserForm_Initialize()
Dim i&
With [A1].CurrentRegion
    If .Rows.Count > 1 Then
        With .Offset(1).Resize(.Rows.Count - 1)
            .Name = "Liste"
            ListBox1.RowSource = "Liste"
            For i = 1 To .Rows.Count
                If .Cells(i, 9) = "Stable" Then ListBox1.Selected(i - 1) = True
            Next
        End With
    Else
        ListBox1.RowSource = ""
    End If
End With
End Sub
A+
 

Pièces jointes

  • Stable(1).xlsm
    26.3 KB · Affichages: 113

job75

XLDnaute Barbatruc
Pour peaufiner fichier (2) avec 2 OptionButtons :
VB:
Private Sub OptionButton1_Change()
Dim i&
With ListBox1
    If .RowSource = "" Then Exit Sub
    For i = 0 To .ListCount - 1
        .Selected(i) = .List(i, 8) = IIf(OptionButton1, "Stable", "Non_Stable")
    Next
End With
End Sub
 

Pièces jointes

  • Stable(2).xlsm
    29.2 KB · Affichages: 112

KTM

XLDnaute Impliqué
Pour peaufiner fichier (2) avec 2 OptionButtons :
VB:
Private Sub OptionButton1_Change()
Dim i&
With ListBox1
    If .RowSource = "" Then Exit Sub
    For i = 0 To .ListCount - 1
        .Selected(i) = .List(i, 8) = IIf(OptionButton1, "Stable", "Non_Stable")
    Next
End With
End Sub
C'est exactement ce que je recherchais
Franchement je ne sais plus comment vous dire merci mais MERCI.
 

jmfmarques

XLDnaute Accro
Bonjour
bah je voulais juste que ça soit statique comme dans un tableau!
"Recouvre" alors les articles de cette listbox par autant de labels que de lignes visibles et :
donne à chaque label la propriété Backstyle = Transparent et la couleur de ton choix
Reviens lorsque tu auras passé cette étape qui, elle, n'est pas en mode exécution, mais en mode création.
Ceci étant ; voilà du bien peu utile bien cher payé.

EDIT : Et finalement même pas, car les labels ne sauraient être au premier plan d'une listbox.
Il te faudrait alors (mais encore plus cher payé) :
- soit (et je ne saurais trop te le déconseiller) utiliser des fonctions de l'Api de Windows
- soit insérer des Frames (1 par ligne à "colorier"), leur donner le zorder et le caption correspondant au texte de l'article !
Bref : une usine à gaz plus contre-productive qu'autre chose.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour borain, jmfmarques,
merci ça fonctionne! sauf que on peut sélectionner et désélectionner bah je voulais juste que ça soit statique comme dans un tableau!
Pas besoin d'usine à gaz, il suffit de bloquer les sélections, fichier (4) :
VB:
Dim flag As Boolean 'mémorise la variable

Private Sub ListBox1_Change()
If flag Then Exit Sub 'évite le bouclage
UserForm_Initialize
End Sub

Private Sub UserForm_Initialize()
Dim i&
flag = True
With [A1].CurrentRegion
    If .Rows.Count > 1 Then
        With .Offset(1).Resize(.Rows.Count - 1)
            .Name = "Liste"
            ListBox1.RowSource = "Liste"
            For i = 1 To .Rows.Count
                ListBox1.Selected(i - 1) = i Mod 2
            Next
        End With
    Else
        ListBox1.RowSource = ""
    End If
End With
flag = False
End Sub
A+
 

Pièces jointes

  • Stable(4).xlsm
    22.2 KB · Affichages: 72
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Il existe d'autres façons que la couleur pour mettre en évidence des lignes de ListBox

Sans titre - Copie (2).png


Boisgontier
 

Pièces jointes

  • ListBoxDisctingue.xlsm
    32.3 KB · Affichages: 138

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou