Colorer Item ListView où date dépassée

  • Initiateur de la discussion Initiateur de la discussion Kim75
  • Date de début Date de début

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 !

Kim75

XLDnaute Occasionnel
Bonsoir le forum,

Quelqu’un pourrait-il me dire ce qui ne va pas dans ce code :
Code:
For x = 1 To .ListItems.Count
    If .ListItems(x).ListSubItems(8).Text <> "" And .ListItems(x).ListSubItems(8).Text < Format(Date, "dd/mm/yyyy") Then
        .ListItems(x).ForeColor = vbRed
        For k = 1 To 8
            .ListItems(x).ListSubItems(k).ForeColor = vbRed
        Next k
    End If
Next
J’ai simplement dit à VBA de colorer les lignes de la ListView où la date inscrite est dépassée, mais ça ne fonctionne pas, il colore même des lignes où la date n’est pas dépassée, je n'en vois pas la cause.

Merci de votre aide, Kim.
 

Pièces jointes

Dernière édition:
Re : Colorer Item ListView où date dépassée

Bonjour Jean Marie, le forum,

Merci pour la réponse,
J'ai eu l'erreur "type défini par l'utilisateur non défini" sur : LstViTem As MSComctlLib.ListItem
Dans les références j'avais microsoft windows common controls 6.0 (sp6) manquante
Je l'ai donc décochée, fermé Excel et relancer le fichier, mais une autre erreur s'est présentée
J'ai alors installé le package : https://www.microsoft.com/fr-FR/download/details.aspx?id=10019
Maintenant la référence initiale ne s'annonce plus comme manquante, mais l'erreur de type persiste
Ca doit une affaire de version de systèmes, je suis sur Windows 10, je testerai plus tard sur Seven

Amicalement, Kim.
 
Re : Colorer Item ListView où date dépassée

Bonjour kim, Jean Marie 🙂

En PJ. Je suis sous Windows 10 64bits et pas d'erreur. J'ai mis aussi les mscom, au cas où.

Mais d'abord, fait une réparation d'excel et si le problème persiste utilise les miens. Il y a un fichier texte qui explique comment les enregistrer.



A+ 😎
 

Pièces jointes

Re : Colorer Item ListView où date dépassée

salut

Autre exemple : des couleurs dans la boucle d’initialisation (mais sans boucler -pas forcément- problème visuel).

Dans le fichier exemple, d’autres boucles permettent de réduire le nombre de lignes de code.
 

Pièces jointes

Re : Colorer Item ListView où date dépassée

Re,

une autre façon de faire

En H2 à tirer jusqu'en bas : =SI(ET(J2<>"";J2="1");"date expirée";A2)

Code:
For x = 1 To .ListItems.Count
   Set LstViTem = .ListItems(x)
    With LstViTem
        If .ListSubItems(8).Text <> "" Then
        
           .ForeColor = IIf(.ListSubItems(7) = "date expirée", vbRed, vbGreen)
         For k = 1 To 9
           .ListSubItems(k).ForeColor = .ForeColor
         Next k
        End If
    End With
Next x


A+ 😎
 
Re : Colorer Item ListView où date dépassée

Salut Lone-wolf, Si...

Sympa d'avoir confirmé le code de Jean Marie, je me doute bien que le problème vient de mon PC,
La colonne H est occupée par des données, j'ai mis date expirée juste pour se repérer dans la ListView,
J'ai procédé exactement comme vous l'avez indiqué, réparé Office et installé votre package (installation réussie),
Mais l'erreur persiste, je vais donc réinstaller Windows et Office avec, pour ne plus me gratter la tête à ce sujet 😀
Je vais aussi tester le classeur sur une autre machine, histoire de confirmer, je vous tiendrai au courant du résultat,

Cordialement, Kim.
 
Re : Colorer Item ListView où date dépassée

Salut le forum,

Merci à Jean Marie, à Lone-wolf et à Si... de m'avoir filé ce coup de main
J'ai restauré Windows 10 qui comportait aussi Office 2007 et ça fonctionne

Merci et bon week-end à tous, Kim.
 
Re : Colorer Item ListView où date dépassée

re

Salut Lone-wolf, Si...

Sympa d'avoir confirmé le code de Jean Marie, je me doute bien que le problème vient de mon PC ???

En relisant ta première demande il semble que tu n'étais embêté que par la couleur, non ?
Avais-tu d'autres problèmes avec ce contrôle ?
As-tu les mêmes soucis avec mon exemple (que j'ai donné en changeant exprès la programmation) ?

Dans certains cas, il suffit de supprimer cet objet récalcitrant et de le réinsérer dans le formulaire (tout dépend de la version de l'OCX).
 
Re : Colorer Item ListView où date dépassée

Salut Si…

Finalement je n’ai pas été obligé de passer par la solution de Jean Marie, qui passait par l’ajout de :
Code:
Dim LstViTem As MSComctlLib.ListItem
J’ai juste ajouté dans la boucle de remplissage de la ListView la ligne :
Code:
.ListItems(N).ListSubItems(8).ForeColor = IIf(CDate(ws.Range("I" & L)) < Date, vbRed, vbBlack)
Et tout est rentré dans l’ordre, les dates dépassées s'affichent correctement, je joins le fichier en cas de besoin.

Merci encore, Kim.
 

Pièces jointes

- 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

Discussions similaires

Réponses
5
Affichages
725
Réponses
2
Affichages
737
Réponses
17
Affichages
2 K
Retour