Comment affecter un repère visuel (couleur) a une ligne de listbox [Résolu]

pythonrocheux - 30 mai 2013 à 16:01 - Dernière réponse :  pythonrocheux
- 1 juin 2013 à 01:29
Bonjour a tous,
Dans un formulaire, j'ai une listbox dont chaque ligne représente une référence de commande a livrer aux clients. Je souhaiterai faire apparaitre un indice de couleur au regard de chacune des lignes, qui serait vert si tout la commande est livrable et rouge dans le cas contraire.
Vu que je n'ai pas trouvé comment changer la couleur de la ligne dans la listbox, j'ai pensé placer un label en tête de chaque ligne dont je ferais changer la couleur de fond. Mais si ma listbox doit se dérouler, mes labels ne correspondent plus a la bonne ligne.
Avez vous un conseil ou une solution a m'apporter pour avancer dans ce sens.
Merci
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 mai 2013 à 16:57
3
Merci
Après réflexion et petits essais ===>> on peut y parvenir et sans labels, mais à quel prix ? ===>> en utilisant une "tapée" (au moins une dizaine) de fonctions de l'Api de Windows (et pas des plus simples) ===>> démesuré et hors de portée de la compréhension d'un débutant.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 mai 2013 à 16:34
0
Merci
Bonjour,
On ne le peut tout simplement pas avec une listbox.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 mai 2013 à 16:38
0
Merci
Ton idée de labels, outre le fait qu'il faudrait recalculer leur position à chaque déroulement de la listbox, serait de toutes manières démesurée (un label par ligne ...)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
pythonrocheux - 30 mai 2013 à 16:56
0
Merci
Merci ucfoutu. Je craignais la réponse. Vois tu un autre controle qui pourrait faire cela.
Commenter la réponse de pythonrocheux
pythonrocheux - 30 mai 2013 à 17:04
0
Merci
Il y a un Nobel à prendre ...
merci
Commenter la réponse de pythonrocheux
cs_Le Pivert 5211 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - 30 mai 2013 à 17:35
0
Merci
Bonjour,

Il y a peut-être une solution avec des CheckBox cochés à la place de de la couleur. Voici un exemple avec 9 lignes :

Private Sub UserForm_Initialize()
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub CommandButton1_Click()
 For I = 0 To 9 Step 2
         ListBox1.Selected(I) = True
       Next I
End Sub


Le problème viendra certainement de la sélection à faire!
Je ne sais pas ce que va en penser ucfoutu que je salue

@+ Le Pivert
Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 mai 2013 à 17:40
0
Merci
Bonjour, LePivert,
C'est une très bonne idée, que tu exprimes là .
Une autre serait deux listboxes (l'une pour les articles correspondant à un cas et l'autre pour les autres articles)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 mai 2013 à 17:45
0
Merci
ou encore (puisque listbox de VBA) : une seule listbox multicolonne dont deux seraient alimentées en "décalé" selon que livrable ou non.
Reste à savoir si c'est possible (impossible si listbox liée à une plage, sauf à décaler également sur la plage)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
pythonrocheux - 30 mai 2013 à 18:04
0
Merci
Oui je vois. Je vais expérimenter ce que vous me proposez
Merci a vous 2.
Le Pivert, je vais voir ton code car je n'ai pas encore tout compris...
Commenter la réponse de pythonrocheux
pythonrocheux - 30 mai 2013 à 22:42
0
Merci
J'ai configuré ma listbox avec :
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
J'ai donc bien mes CheckBox a gauche de chaque ligne. Parfait!

Je n'ai pas précisé lors de ma demande initiale que je charge cette listBox avec la propriété List et que c'est une multi-colonnes.
Je ne sais pas si c'est lié, mais je n'arrive a forcer mes cases à cocher a True avec "selected". Je n'ai rien trouvé dans l'aide ExcelVBA sur la propriété "selected".
L'idée de Pivert me plaisait pourtant...
Merci
Commenter la réponse de pythonrocheux
Utilisateur anonyme - 31 mai 2013 à 03:16
0
Merci
Bonjour,
Changer la couleur ça va compliquer les choses à coup sur.

Par contre j'ai vu CETTE PAGE ça a l'air sympa...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 31 mai 2013 à 07:15
0
Merci
Je n'ai pas précisé lors de ma demande initiale que je charge cette listBox avec la propriété List

C'est bien ce que je craignais...
Pour mémoire :
Reste à savoir si c'est possible (impossible si listbox liée à une plage, sauf à décaler également sur la plage)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 31 mai 2013 à 07:32
0
Merci
Un truc à envisager, peut-être
- Ajouter une colonne à la plage de liaison (avant la colonne A, par exemple)
- Masquer cette colonne
- Y mettre un "X" (par formule ou par VBA) si commande livrable et rien si non livrable
- Modifier, bien sur, l'adresse de la plage liée (dans les propriété de la listbox) et apouter une colonne à la listbox.

De cette manière ; la colonne des "X" n'apparaîtra pas sur la feuille de calcul, mais apparaîtra sur la listbox.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
pythonrocheux - 31 mai 2013 à 10:09
0
Merci
Merci active pour le lien, mais je crois que je retombe dans le même pb.
- Ajouter une colonne à la plage de liaison (avant la colonne A, par exemple)
- Masquer cette colonne
- Y mettre un "X" (par formule ou par VBA) si commande livrable et rien si non livrable
- Modifier, bien sur, l'adresse de la plage liée (dans les propriété de la listbox) et apouter une colonne à la listbox.

Oui ucfoutu, ce que tu me proposes là est ma solution de départ à un détail près.
TabArticCmdEnCours(Lig, 3) = Sgn(Sheets("CmdInterne").Cells(i + 2, 7)) ' retourne positif ou pas si dispo

je retourne -1 si stock vide et 1 si stock dispo.
Je souhaitai plus visuel!. Mais... bon on aura essayé
Merci a tous
Alain
Commenter la réponse de pythonrocheux
cs_Le Pivert 5211 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 juillet 2018 Dernière intervention - 31 mai 2013 à 15:23
0
Merci
J'ai trouvé une solution pour sélecter les items suivant ta feuille.
Exemple sur feuille2 les données sont dans la colonne A et tu mets des 1 dans la colonne B pour sélecter

Private Sub CommandButton1_Click()
Dim N As Integer
Dim i As Integer
N = "1"
For j = 0 To ListBox1.ListCount - 1
For i = 1 To Range("B65536").End(xlUp).Row
If Sheets("Feuil2").Cells(i, 2).Value = N Then
ListBox1.Selected(i - 1) = True
End If
Next i
Next j
End Sub
Private Sub UserForm_Initialize()
ListBox1.ListStyle = fmListStyleOption
ListBox1.MultiSelect = fmMultiSelectMulti
End Sub




@+ Le Pivert
Commenter la réponse de cs_Le Pivert
Utilisateur anonyme - 31 mai 2013 à 15:48
0
Merci
Pourquoi ne pas utiliser une listview?
Au lieu des 'acrobaties' qu'on apprête à faire...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
pythonrocheux - 31 mai 2013 à 18:38
0
Merci
Merci acive pour cette piste. C'est un controle que je n'ai jamais utilisé mais il n'est jamais trop tard pour bien faire. L'aide d'excel n'est très fournie sur le sujet mais je vais aller sur la toile.
Commenter la réponse de pythonrocheux
Commenter la réponse de pythonrocheux

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.