Bug sur ListBox.BackColor

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Dernière édition:
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
 
Re : Evenement change sur un Listbox

Merci pour ta réponse.
ça fonctionne à moitié on va dire 😕
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.
 
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.
 
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:
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.
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour