cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 2023
-
5 juin 2007 à 17:19
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
5 juin 2007 à 19:57
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....
cs_nirega
Messages postés58Date d'inscriptiondimanche 17 février 2002StatutMembreDernière intervention14 janvier 2008 5 juin 2007 à 19:48
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
Doc VB
Messages postés16Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention20 juillet 2007 5 juin 2007 à 17:32
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
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 17:32
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 5 juin 2007 à 17:36
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.
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 17:41
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 !
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 5 juin 2007 à 17:46
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 ????
Doc VB
Messages postés16Date d'inscriptionvendredi 24 novembre 2000StatutMembreDernière intervention20 juillet 2007 5 juin 2007 à 17:50
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
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 5 juin 2007 à 18:04
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
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 19:57
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