Microsoft 365 Comment donner des couleurs aux lignes d'une ListView excel VBA

TCHIS

XLDnaute Occasionnel
Bonsoir à toutes et tous

C'est encore moi qui reviens à la charge, les habitués savent sur quoi porte mon problème à savoir la avoir la mise en place d'un outil pour suivi de Gammes sur Excel.

Afin de me permettre de trouver une solution à mes difficultés plus efficacement j'ai bien appris de mes erreurs.

C'est pourquoi pour une première fois je viens avec un bout de code que j'ai tenté de mettre en place après avoir recherché dans le forum et sur Youtube des cas similaires à mon problème actuel.

Alors ce qu'il y a c'est que je tente d'appliquer une des couleurs aux lignes de ma ListView en fonction du Critère Validité quise trouve dans la 13colonnes de ma ListView1.

Ce que je souhaite c'est qu'en fonction de la valeur se trouvant dans cette colonne (Validité) toute ma ligne se colore c'est-à-dire, si:
la validité est V0 la ligne se met rouge entièrement
V1 pour Noir, (C'est la couleur par défaut )
V2 pour Orange,
V3 pour Bleu,
V4 pour Vert.

Le souci c'est que quand je tente de lancer la procédure il me ressort Erreur d'exécution 1004.

En pièce jointe vous avez une capture sur là où se situe mon problème.
Etant donner que ce code se situe dans une macro(Couleur_LV) je ne sais pas trop exactement ce que je dois faire je me dis que peut être tout n'est pas jeter à l'eau mais je suis ouvert aux différentes propositions que vous pourriez me soumettre.
En passant V0, V1, V2,V3 et V4 ont été défini comme Variant je ne sais pas si j'ai mal fait ou non.
Donc s'il vous plait pourriez vous y jeter un coup d'euil et m'aider à trouver soit une nouvelle solution parce que je ne suis pas sur que mon code soit exploitable en toute sincérité
VB:
Sub Couleur_LV() 'Macro permettant de donner une couleur distincte au ligne de ma ListView en fonction de la valeur se trouvant dans la colonne Validité (V0 pour Rouge, V1 pour Noir, V2 pour Orange, V3 pour Bleu, V4 pour Vert)
       Dim V0 As Variant
       Dim V1 As Variant
       Dim V2 As Variant
       Dim V3 As Variant
       Dim V4 As Variant
       dligne = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
       'On définit la zone(La plage) sur laquelle sera appliqué Moncritère
       C = Feuil1.Range("A1:U" & dligne).Value
       'On définit à quoi correspond Moncritère
       MonCritère = Cells(i, 13).Value
       With USF.ListView1
        For i = 3 To UBound(C)
            Select Case MonCritère
                   Case Is = V0
                   Couleur = vbRed
            End Select
        Next i
       End With
End Sub
Capture d’écran (200).png
 

TCHIS

XLDnaute Occasionnel
Excusez moi s'il vous plait

Alors TooFatBoy le code propose pour les couleurs il marche correctement et j'ai à présent des couleurs.

Toutefois pour que ça marche j'ai dû la placée dans le UserForm_Activate car dans le UserForm_Initialize ilse passe rein (les couleurs ne s'appliquent pas) .

Et le problème est que si dans Activate il marche la macro permettant de faire la recherche quand je la lance les données( les Lignes) qu'elle présente n'ont pas de couleurs.

Pensez-Vous que je dois déplacer la macro recherche dans activate pour que ça marche comme souhaiter ?
 

TooFatBoy

XLDnaute Barbatruc
Toutefois pour que ça marche j'ai dû la placée dans le UserForm_Activate car dans le UserForm_Initialize ilse passe rein (les couleurs ne s'appliquent pas) .
Si, ça fonctionne, les couleurs s'appliquent, et on en revient à ce que je disais : exécute en pas-à-pas et tu verras que c'est n'importe quoi...
Plus précisément, la ListView est effacée et reconstruite autant de fois qu'il y a de lignes dans le tableau !... 🤪
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Et le problème est que si dans Activate il marche la macro permettant de faire la recherche quand je la lance les données( les Lignes) qu'elle présente n'ont pas de couleurs.
Oui, j'avais remarqué ce problème.


Pensez-Vous que je dois déplacer la macro recherche dans activate pour que ça marche comme souhaiter ?
Il est certain qu'il faut revoir des trucs... Il faut appeler les bonnes macros au moment adéquat.

J'avoue que je n'ai pas regardé ce détail de plus près puisque la question était de colorier les lignes en fonction d'un critère, et c'est ce que fait la macro.
Suffit de l'appeler au bon moment. ;)
 

TCHIS

XLDnaute Occasionnel
Oui, j'avais remarqué ce problème.



Il est certain qu'il faut revoir des trucs... Il faut appeler les bonnes macros au moment adéquate.

J'avoue que je n'ai pas regardé ce détail de plus près puisque la question était de colorier les lignes en fonction d'un critère, et c'est ce que fait la macro.
Suffit de l'appeler au bon moment. ;)
Oui je vois un peu ce que tu veux dire par l'appeler au bon moment
 

TooFatBoy

XLDnaute Barbatruc
Voilà, c'est exactement ça : de la méthode, des macros qui font un travail bien précis et qui sont appelées au bon moment. ;)

Sur ce, amusez-vous bien avec vos couleurs, mais n'en foutez pas partout, faut que le forum soit nickel quand je reviens !


Bonne journée
Tschüss
 

TCHIS

XLDnaute Occasionnel
bonsoir
j'ai pris quelques dizaines de minutes pour essayer de comprendre ce que tu veux
j'ai donc copier ton userform et vider tout le code
j'ai fait le mien
est ce que c'est un truc du genre que tu veux
pour l'instant je n'est fait que l'année et le mois

Regarde la pièce jointe 1165669
Exactement patrick j'ai pu aussi y arrivé mais en copier le titre de la macro couleur_LV dans la macro recherche (En gros je l'ai appelé au bon moment comme le suggérait TooFatBoy)
ça marche mais je me dis est ce que ça ne va pas poser problème du genre ralentir le fichier
Tu vois un peu ?
Ce qui est encore plus intéressant sur ce que tu as fait c'est qu'on a un message qui dit pas de correspondance dans le tableau avec ce critère 🤩🤩🤩
C'est bien ce qu'on appelle boite de dialogue c'est ça ?
 
Dernière édition:

TCHIS

XLDnaute Occasionnel
D'ailleurs en parlant de boite de dialogue j'ai une action ou plutôt deux que je souhaiterai mettre en place dans ce projet.

En gros je souhaite conditionné l'accès à la page 2 (Onglet de renseignement de suivi de Gammes Opératoires)
et cette action je voudrai avoir la possibilité de les faire de deux manières différentes
Dois-je donc créer une nouveau sujet (conversation) dans le forum ?

Je sais que le sujet avec les couleurs n'est pas encore clôturé mais je me dis autant en profiter ici pour avancer les choses vraiment ça serait intéressant car je ne pense pas qu'un sujet de ce type est déjà été créer dans le Forum.
Vous en pensez quoi ?
 

TCHIS

XLDnaute Occasionnel
Si ça n'a rien à voir avec les couleurs, il est peut-être mieux que tu ouvres un autre fil.
Bonjour à tous et à toutes.
TooFatBoy, patricktoulon concernant l'autre sujet sur lequel je suis j'ai fait comme vous me l'avez suggérer j'ai bel et bien créer une nouvelle conversation dans le forum dont le titre est: Conditionner l'accès à une page d'un multipage.

J'espère bien vous retrouver là-bas et que ça sera un sujet qui vous sera aussi bénéfique et que vous trouverez intéressant ce qui est sûr j'aurai encore besoin de vous les anciens.
A+
 

TCHIS

XLDnaute Occasionnel
Perso, vu que ça n'apporte rien par rapport à ce que j'ai donné précédemment comme solution sur la question de ce fil, du coup je m'en cogne un pneu... 😅

Après, si c'est pour qu'on te débogue les boutons "Réinitialiser", je suis désolé mais je n'ai pas trop le temps en ce moment. 😔
Bien au contraire ton fichier à un plus comparé à ce que j'ai pu réaliser grâce à vos conseils d'ailleurs.
Cette option avec la boite dialogue qui envoie le message qu'il n'y a aucune correspondance honnêtement je n' y avait même pas songé Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 819
Messages
2 092 397
Membres
105 403
dernier inscrit
LouisRYn