Bug sur ListBox.BackColor

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Je me prend la tête depuis ce matin sur un truc tout bête, j'ai beau le tourner dans tous les sens, impossible de trouver d'où ça vient.

Lors de la validation d'un userform, je vérifie que l'utilisateur a coché au moins un élément d'une listbox. Dans le cas contraire, je passe le backcolor du listbox en rouge.

Jusque là, tout va bien.

Je voudrais que lorsque l'utilisateur rectifie cette erreur et qu'il coche un élément du listbox, son backcolor repasse en blanc.

J'ai utilisé pour cela l'évènement change du Listbox. Et pourtant, mon listbox ne repasse jamais en blanc. Pourtant l'évènement change se déclenche bien mais on dirait que la ligne :

Code:
ListBox1.BackColor = &HFFFFFF

ne fonctionne pas.

Pourriez me dire si il y a une subtilité que je n'aurai pas compris ?

Je vous remercie par avance de votre aide
 

Pièces jointes

  • Essai listbox.xls
    22.5 KB · Affichages: 38
  • Essai listbox.xls
    22.5 KB · Affichages: 42
  • Essai listbox.xls
    22.5 KB · Affichages: 41
Dernière édition:
D

Denis

Guest
Re : Evenement change sur un Listbox

Bonjour GeoTrouvePas et le Forum,
Essais l'évenement Mouse_Down par exemple. Ajoute Me devant ListBox pour confirmer l'adresse de cette LB.
Bon courage et à +
Denis
 

GeoTrouvePas

XLDnaute Impliqué
Re : Evenement change sur un Listbox

Merci pour ta réponse.
ça fonctionne à moitié on va dire :confused:
J'ai remplacé mon évènement Change par :
Code:
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ListBox1.BackColor = &HFFFFFF
End Sub

Mon Listbox repasse bien en blanc mais la sélection des coches est bizarre. Si je sélectionne n'importe quel item, ça me sélectionne l'item 1 en plus. Vraiment bizarre. Je n'y comprend plus rien.
 

GeoTrouvePas

XLDnaute Impliqué
Re : Evenement change sur un Listbox

ça ne change rien puisque tout est à l'intérieur du userform.

Par contre je viens de faire un petit test qui remonte un résultat intéressant. J'ai mis :
Code:
Private Sub ListBox1_Change()
    ListBox1.BackColor = &HFFFFFF
    MsgBox ListBox1.BackColor = &HFFFFFF
End Sub

Et bien mon Msgbox me renvoi bien Vrai à tous les coups. Pour Vba, le listbox est donc bien en blanc mais visuellement, il est toujours rouge.

ça ressemble donc plus à un bug d'affichage.
 

Pierrot93

XLDnaute Barbatruc
Re : Bug sur ListBox.BackColor

Bonjour,

A tout hasard :
Code:
Private Sub ListBox1_Change()
    ListBox1.BackColor = &HFFFFFF
    Me.Repaint
End Sub

Mais pas sûr que l'événement change soit le plus approprié.... essaye peut être l'événement "click"....

bon après midi
@+
 
Dernière édition:

GeoTrouvePas

XLDnaute Impliqué
Re : Bug sur ListBox.BackColor

Merci Pierrot ! J'avais déjà pensé au Me.Repaint mais malheureusement ça ne marche pas non plus.

C'est quand même dingue qu'un simple :
Code:
Private Sub ListBox1_Change()
    ListBox1.BackColor = &HFFFFFF
End Sub
ne fonctionne pas.

L'évènement se déclenche bien mais le .backcolor reste sans effet.
 

job75

XLDnaute Barbatruc
Bonjour GeoTrouvePas, Denis, Pierrot,

En effet ce n'est pas évident.

Il y a des interférences entre le focus, la coloration et la sélection...

Evènement Enter de la ListBox, dans UserForm1 :

Code:
Private Sub ListBox1_Enter()
ListBox1.BackColor = &HFFFFFF 'incolore
Application.OnTime Now, "Couleur"
End Sub
Et dans Module1 :

Code:
Sub Couleur()
Dim i
With UserForm1.ListBox1
  For i = 0 To .ListCount - 1
    If .Selected(i) = True Then Exit Sub
  Next
UserForm1.CommandButton2.SetFocus
.BackColor = &HFF 'couleur rouge
End With
End Sub

Fichier joint.

Edit : dans la macro Initialize, ne pas oublier de donner le focus au bouton...

A+
 

Pièces jointes

  • Essai listbox(1).xls
    44 KB · Affichages: 53
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 814
Messages
2 092 339
Membres
105 370
dernier inscrit
Leheryboriziny