Couleur du texte dans une listview

Résolu/Fermé
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 1 sept. 2021 à 22:24
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 8 sept. 2021 à 13:53
Bonjour à tous,

Je bute sur ce bout de code.
J'effectue une recherche dans une feuille depuis un UseFfrom. Le texte cherché est écrit dans une TextBox. Quand la recherche correspond, la ListView s'incrémente des données de la ligne de la feuille.
J'aimerais que lors de la recherche, le texte qui correspond à la recherche change de couleur dans la ListeView.
Avec ce code, le texte change bien de couleur mais pas sur la bonne colonne.

Soit le texte en son entier change de couleur, soit seule la partie du texte du TextBox change de couleur.

Par avance merci pour votre aide.

Sub ALimenterListView1()

Dim f As Worksheet
Dim Lr As Long
Dim Ligne As Integer
Dim awb As String
Dim fa As String
Dim c As Variant
Dim cl As Integer

awb = ActiveWorkbook.Name
fa = ActiveSheet.Name

Set f = ThisWorkbook.Sheets("Feuil1")

  With Me.ListView1
    .ListItems.Clear
      Lr = Dlg(awb, fa, 1, Cells(1, 1).Value)
      If Lr = 2 Then Exit Sub
      
      Ligne = 1
      
      For Each c In Plage(awb, fa, 1)
        If InStr(1, c, Usf.TextBox1.Text, vbTextCompare) > 0 Then
          cl = c.Column
          
          .ListItems.Add , , f.Cells(c.Row, 1)
          For i = 2 To Dcl(awb, fa, 1)
            With .ListItems(Ligne)
              .ListSubItems.Add , , f.Cells(c.Row, i)
            End With
          Next i
          .ListItems(Ligne).ListSubItems(cl).ForeColor = vbGreen
          Ligne = Ligne + 1
        End If
        i = 2
      Next c
      
  End With

Set f = Nothing

End Sub


Configuration: Windows / Chrome 92.0.4515.159

7 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 2 sept. 2021 à 08:07
Re,

Je recupere le fichier et regarde la chose

Quelle colonne voulez vous en couleur?
1
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
3 sept. 2021 à 21:09
Bonsoir,

Désolé pour mon temps de réponse. Le temps de refaire mon fichier exemple.
J'espère que le résultat souhaité sera plus parlant en utilisant ce fichier.
https://www.cjoint.com/c/KIdtax73NK5

Faites une recherche en utilisant le bouton "Afficher dans feuille" de l'UserForm.

J'aimerais avoir le même résultat mais, dans la ListView.

Encore merci pour tout.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 sept. 2021 à 07:34
Bonjour,

Avec ce code, le texte change bien de couleur mais pas sur la bonne colonne.
Certes, certes, avec un fichier exemple serait plus facile.

Votre code change bien la couleur, mais perso, je ne sais pas laquelle vous voulez.

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...

ou
'mon partage termine arrete
https://mon-partage.fr/

ou
www.transfernow.net 'fichier jusqu'a 4G
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
Modifié le 2 sept. 2021 à 07:52
Bonjour,

Voici le lien : https://www.cjoint.com/c/KIcfWicsce5

Pour tester, faire une recherche avec AM.
Encore merci.

Bonne journée.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié le 4 sept. 2021 à 10:31
Bonjour,

Désolé pour mon temps de réponse.
Y a pas d'lezard.
Je regarde la chose

Par contre, je ne sais pas si dans colonne listview possible de colorier une partie de texte.
Je vais chercher
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 sept. 2021 à 11:19
Re,

En attendant si possible couleur partiel texte: https://www.cjoint.com/c/KIejryANpFf
J'ai fait petite modif pour recherche en temps reel sans bouton
Question:
votre recherche se fait sur toutes les colonnes, normal ou pas?
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
Modifié le 4 sept. 2021 à 12:45
Bonjour,

Oui c'est normal et très bonne idée la recherche au fur et mesure de la saisie.

Le but de changer la couleur du texte trouvé est de rapidement visualiser où le texte recherché correspond.
C'est plus pratique quand il y une dizaine, voir plus, de colonnes et des milliers de lignes.

Encore merci.
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
8 sept. 2021 à 13:53
Bonjour,

Je partage avec vous une proposition de solution à mon problème. Elle pourra, je l'espère servir à d'autres.

https://www.cjoint.com/c/KIilS7bzIV5

Sub AlimenterListe()

  Dim i As Long
  Dim cpt As Long
  
  cpt = 0
  
  With userform1.ListView1
    .ListItems.Clear
      With .ColumnHeaders
         .Clear
         .Add , , "Nom", 60
         .Add , , "Prénom", 60, 2
         .Add , , "Age", 60, 2
      End With
   .View = lvwReport
   .FullRowSelect = False
   .Gridlines = True
   
    For lg = 2 To Sheet1.Range("A65536").End(xlUp).Row
      For cl = 1 To 3
        If InStr(1, Cells(lg, cl), userform1.TextBox1.Text, vbTextCompare) > 0 Then
          .ListItems.Add , , Sheet1.Cells(lg, 1)
          .ListItems(.ListItems.Count).ListSubItems.Add , , Sheet1.Cells(lg, 2)
          .ListItems(.ListItems.Count).ListSubItems.Add , , Sheet1.Cells(lg, 3)
          GoTo suite
       End If
      Next cl
suite:
    Next lg
    
    bcl = 0
    For lg = 1 To .ListItems.Count
      For cl = 1 To .ColumnHeaders.Count
        If cl = 1 And InStr(1, .ListItems(lg).Text, userform1.TextBox1.Text, vbTextCompare) > 0 Then
          .ListItems(lg).ForeColor = vbGreen
          cpt = cpt + 1
        ElseIf cl > 1 And bcl = 0 Then
          cl = cl - 1
          bcl = 1
          If InStr(1, .ListItems(lg).ListSubItems(cl).Text, userform1.TextBox1.Text, vbTextCompare) > 0 Then
            .ListItems(lg).ListSubItems(cl).ForeColor = vbGreen
            cpt = cpt + 1
          End If
          cl = cl + 1
        ElseIf cl > 1 And bcl = 1 Then
          cl = cl - 1
          If InStr(1, .ListItems(lg).ListSubItems(cl).Text, userform1.TextBox1.Text, vbTextCompare) > 0 Then
            .ListItems(lg).ListSubItems(cl).ForeColor = vbGreen
            cpt = cpt + 1
          End If
        cl = cl + 1
        End If
      Next cl
    Next lg
    
  End With
  MsgBox "Nombre d'occurence trouvée : " & cpt
End Sub


Malheureusement, je n'ai pas réussi à mettre en couleur partiellement le texte trouvé dans la ListeView. Si le texte cherché est dans le texte de la cellule de ListView alors c'est le texte en son entier de la cellule qui change de couleur.

Encore merci pour l'aide apportée.

Bonne journée et mon continuation.
0