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
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
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
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
Bonsoir à tous,
je sais que vous avez déjà clôturer la discussion mais
je coince sur le même problème. sauf que moi je veux juste une boucle 1ere ligne surbrillance la deuxième rien ainsi de suite
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!
merci beaucoup pour votre réponse
"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.
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