Colorer Item ListView où date dépassée

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

  • Couleur_Date_Passee.xlsm
    32.3 KB · Affichages: 43
  • Couleur_Date_Passee.xlsm
    32.3 KB · Affichages: 44
Dernière édition:

Kim75

XLDnaute Occasionnel
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.
 

Lone-wolf

XLDnaute Barbatruc
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+ :cool:
 

Pièces jointes

  • Fichier-MSCOM.zip
    865 KB · Affichages: 46

Si...

XLDnaute Barbatruc
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

  • ListView Couleur.xlsm
    23.9 KB · Affichages: 55

Lone-wolf

XLDnaute Barbatruc
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+ :cool:
 

Kim75

XLDnaute Occasionnel
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 :D
Je vais aussi tester le classeur sur une autre machine, histoire de confirmer, je vous tiendrai au courant du résultat,

Cordialement, Kim.
 

Kim75

XLDnaute Occasionnel
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.
 

Si...

XLDnaute Barbatruc
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).
 

Kim75

XLDnaute Occasionnel
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

  • Couleur_Date_Passee.xlsm
    31.3 KB · Affichages: 40
  • Couleur_Date_Passee.xlsm
    31.3 KB · Affichages: 49

Discussions similaires

Réponses
17
Affichages
841

Statistiques des forums

Discussions
312 231
Messages
2 086 430
Membres
103 207
dernier inscrit
Michel67