VB6 Ligne spécifice en Gras dans un ListView [Résolu]

cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 5 juin 2007 à 17:19 - Dernière réponse : jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention
- 5 juin 2007 à 19:57
Rebonjour...

Derniere question de la journée.....

J'ai un ListView que j'aimerais mettre certain ligne en gras.
J'ai trouvé un bout de code permettant de faire cela... Mais je n'y arrive pas...
http://www.vbfrance.com/codes/CERTAINES-DONNEES-GRAS-DANS-LISTE_1989.aspx

Je ne sais pas si c'est causé par ADO...
Voici mon code....

    Do While BD2007.EOF = False
        With ListView2.ListItems.Add(, , IsN(BD2007!DOSSIER))   
            .SubItems(1) = IsN(BD2007![DATE D    'OUVERTURE])   
           .SubItems(2) = BD2007![NATURE DU TRAVAIL]
            If InStr(.SubItems(2) = IsN(BD2007![NATURE DU TRAVAIL]), "+") Then
                ListView2.ListItems.Item(2).Bold = True
             End If
            .SubItems(3) = IsN(BD2007!LOTS)                
        End With
        Dim Count As Integer
        Count = Count + 1
        BD2007.MoveNext

Merci de votre aide...

P.S. je ne suis pas encore tres habile avec les ListView....
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 5 juin 2007 à 17:24
3
Merci
C'est quoi ce IF
If InStr(.SubItems(2) = IsN(BD2007![NATURE DU TRAVAIL]), "+")

Tu es sur que ce ne serait pas plutot

If InStr(1,.SubItems(2), "+") Then
'si toutefois tu recherche un + dans et que c'est tat condition pour mettre en gras.

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
cs_nirega 58 Messages postés dimanche 17 février 2002Date d'inscription 14 janvier 2008 Dernière intervention - 5 juin 2007 à 19:48
3
Merci
salut Jeff
regarde ce code et il va faire ton bonheur

Function rand(lowerbound As Long, upperbound As Long) As Long
    Randomize
    rand = CLng((upperbound) * Rnd + lowerbound)
    Debug.Print rand
End Function
Private Sub Form_Load()
    Dim itm As MSComctlLib.ListItem
    Dim subItm As MSComctlLib.ListSubItem
    Dim arNom
    
    arNom = Array("ALEX", "JEFF", "MARIE-FRANCE", "NATHALIE")
    
 
   ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width / 4
   ListView1.ColumnHeaders.Add , , "Prénom", ListView1.Width / 4
   ListView1.ColumnHeaders.Add , , "Age", ListView1.Width / 4, lvwColumnCenter
   ListView1.ColumnHeaders.Add , , "Cp", ListView1.Width / 4, lvwColumnCenter
 
   ListView1.View = lvwReport
    For i = 1 To 20
        Set itm = ListView1.ListItems.Add(, , arNom(rand(0, 3)))
        itm.Bold = True
       
        Set subItm = itm.ListSubItems.Add(, , arNom(rand(0, 3)))
        subItm.ForeColor = vbGreen
        subItm.Bold = True
       
        Set subItm = itm.ListSubItems.Add(, , rand(18, 50))
        subItm.ForeColor = vbRed
        subItm.Bold = True
       
        Set subItm = itm.ListSubItems.Add(, , rand(1, 95))
        subItm.ForeColor = vbBlue
        subItm.Bold = True
    Next i
 
End Sub

la fonction rand n'est pas nessecaire pour toi

nirega
a+

Merci cs_nirega 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_nirega
Doc VB 16 Messages postés vendredi 24 novembre 2000Date d'inscription 20 juillet 2007 Dernière intervention - 5 juin 2007 à 17:32
0
Merci
Oui, et à la place de :
...
If InStr(1,.SubItems(2), "+") Then
   ListView2.ListItems.Item(2).Bold = True
End If
...
Je verrais ça :
...
If InStr(1,.SubItems(2), "+") Then
   .Bold = True

End If
...
Commenter la réponse de Doc VB
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 5 juin 2007 à 17:32
0
Merci
Un premier réflexe, d'abord !
J'insèrerais volontiers un msgbox (en rouge ci-dessous), juste pour voir si ma condition est présente (auquel cas ce serait bien l'instruction de mise en gras qui serait défaillante) ou si, au contraire, elle ne l'est pas (et dans ce cas, ce serait ma condition, qu'il me faudrait accuser, et pas la syntaxe de mise en gras... non ?


If InStr(.SubItems(2) = IsN(BD2007![NATURE DU TRAVAIL]), "+") Then
                msgbox "j'y suis"
                ListView2.ListItems.Item(2).Bold = True
End If
Commenter la réponse de jmfmarques
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 5 juin 2007 à 17:36
0
Merci
Salut...
Peut-être que ma condition n'est pas bonne mais..... Je t'explique...

Dans mon code j'ai mis 4 colonnes... Mais je veux que si et seulement si la colonne "Nature du Travail" contient un "+" alors mais la ligne du ListBox en Gras....

Si je prend ta condition... Je n'ai qu'un Numéro de dossier qui devient en gras et ce dossier ne contient pas de "+" dans la colonne Nature du Travail. Il est à noter que j'ai 176 enregistrement qui s'affichent dans le ListView et je devrais avoir une cinquantaine de lignes en gras

Peut-être mon problème provient d'ailleurs dans la partie du code que j'ai mis dans mon premiere message.

J'attends de ton aide.. Merci d'avance
Commenter la réponse de cs_JeffC1977
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 5 juin 2007 à 17:41
0
Merci
Commence par le commencement, donc. Celà t'évitera des "peut-être que ma condition n'est pas bonne"
Mets ce msgbox, lance, et tu sauras sans ambiguité si ta condition est bonne ou non !
Commenter la réponse de jmfmarques
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 5 juin 2007 à 17:46
0
Merci
Rebonjour....

Effectivement ma condition n'est pas bonne...

Je ne rentre pas dedans.....

J'ai essayé la condition de DocVB et je rentre dans la conditon... et ca marche.
Toutefois, les lignes qui contienents un "+" ne se mettent pas en Gras ????

merci d'avance...
Commenter la réponse de cs_JeffC1977
Doc VB 16 Messages postés vendredi 24 novembre 2000Date d'inscription 20 juillet 2007 Dernière intervention - 5 juin 2007 à 17:50
0
Merci
Je n'ai fait que reprendre la condition que Julien déjà avait corrigé au préalable, mon action consistait simplement à mettre en gras le bon élément (en l'occurence l'élément de la première colonne). Pour mettre la ligne entière en gras, il faut compléter ton code :
If InStr(1,.SubItems(2), "+") Then
   .Bold = True
   .SubItems(1).Bold = True
   .SubItems(2).Bold = True
   .SubItems(3).Bold = True
End If
Commenter la réponse de Doc VB
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 5 juin 2007 à 18:04
0
Merci
Daccord... j'y avais pensé... et j'étais justement entrain de faire quelque test mais... si je fais ca comme code ca me dit:
Erreur de compilation
Qualificateur incorect

Do While BD2007.EOF = False
        With ListView2.ListItems.Add(, , IsN(BD2007!DOSSIER))
            .SubItems(1) = IsN(BD2007![DATE D    'OUVERTURE])




            .SubItems(2) = BD2007![NATURE DU TRAVAIL]
            'If InStr(.SubItems(2) = IsN(BD2007![NATURE DU TRAVAIL]), "+") Then
            If InStr(1, .SubItems(2), "+") Then


                .Bold = True


               'ListView2.ListItems.Item(2).Bold = True
                .SubItems(3).Bold = True
                .SubItems(4).Bold = True
                .SubItems(5).Bold = True
                .SubItems(6).Bold = True
                .SubItems(7).Bold = True
                .SubItems(8).Bold = True
                .SubItems(9).Bold = True
                .SubItems(10).Bold = True
                .SubItems(11).Bold = True




            End If
            .SubItems(3) = IsN(BD2007!LOTS)
            .SubItems(4) = IsN(BD2007!CADASTRE)
            .SubItems(5) = IsN(BD2007!CLIENTS)
            .SubItems(6) = IsN(BD2007!TELEPHONE)
            .SubItems(7) = IsN(BD2007!adresse)
            .SubItems(8) = IsN(BD2007!MUNICIPALITE)
            .SubItems(9) = IsN(BD2007![DATE DE LIVRAISON])
            .SubItems(10) = IsN(BD2007!TERMINE)
            .SubItems(11) = IsN(BD2007!REMARQUES)


        End With
        Dim Count As Integer
        Count = Count + 1
        BD2007.MoveNext
    Loop

Merci de votre aide c'est tres aprécié
Commenter la réponse de cs_JeffC1977
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 5 juin 2007 à 19:57
0
Merci
Tu n'as peut-être pas tout bien saisi du mécanisme (en plus de la validité de ta condition, bien sur...)

Voilà un exemple.
Ici, je mets en gras et en rouge un item sur 2 de la 1ère colonne

Private Sub Form_Load()
    ListView1.View = lvwReport
    Dim Litem As ListItem
    ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width / 3
    ListView1.ColumnHeaders.Add , , "prénom ID", ListView1.Width / 3, lvwColumnCenter
    ListView1.ColumnHeaders.Add , , "date de naissance", ListView1.Width / 3
    ListView1.ColumnHeaders.Add , , "", 0
    Dim itmX As ListItem
    For i = 1 To 10
       Set itmX = ListView1.ListItems.Add(, , i)
       itmX.SubItems(1) = "a" & i
       If i Mod 2 = 0 Then
          itmX.SubItems(2) = "17/02/2000"
           ListView1.ListItems.Item(i).Bold = True
           ListView1.ListItems.Item(i).ForeColor = vbRed
       Else
          itmX.SubItems(2) = "20/03/2002"
          itmX.SubItems(3) = "20020320"
       End If
    Next
End Sub
Commenter la réponse de jmfmarques

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.