novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006
-
20 juil. 2006 à 13:11
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006
-
23 juil. 2006 à 22:15
voila, je veux mettre des couleurs suivant le chiffre ( + = vert et - = rouge) seulement voila ca regarde le premier résultat et pas les autres
--------------------------------------------------------------------------------------------
For i = 1 To rs.RecordCount
If argen < 0 Then
Grille1.BackColor = vbRed
Grille1.Rows = Grille1.Rows + 1
Grille1.TextArray(faIndex(i, 0)) = rs.Fields("date")
Grille1.TextArray(faIndex(i, 1)) = rs.Fields("motif")
Grille1.TextArray(faIndex(i, 2)) = rs.Fields("argent")
rs.MoveNext
Else
Grille1.BackColor = vbGreen
Grille1.Rows = Grille1.Rows + 1
Grille1.TextArray(faIndex(i, 0)) = rs.Fields("date")
Grille1.TextArray(faIndex(i, 1)) = rs.Fields("motif")
Grille1.TextArray(faIndex(i, 2)) = rs.Fields("argent")
rs.MoveNext
End If
Next
----------------------------------------------------------------------------------
je pensais que a chaque tour ça allez vérifier mais aparemmen non ou alor je mis prend mal !
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 juil. 2006 à 21:53
salut,
ton code est bourré d'erreurs.
tu ne testes pas la validité des dates saisies (peuvent ne pas l'être), ni de la présence de somme (donc erreur à la relecture) et j'en passe...
bref!!
pour la couleur, tu parles de somme depuis le départ. si tu avais dit que la valeur stoquée contenait un "+" ou "-" on aurait gagné du temps... (quelle idée de stoquée uen somme en string....)
chez moi çà marche, espérons que çà te convienne :
Public Sub Load()
Dim i As Long
conte = Form1.cmb_compte.Text
frm_historique.Caption = "Historique du " & conte
Set db = OpenDatabase(App.Path & "\gestion_97.mdb")
sql = "SELECT * FROM tbl_gestion WHERE compte ='" & conte & "' ORDER BY id DESC"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
Dim argen As String
Dim lCol As Long 'variable pour la couleur
For i = 1 To rs.RecordCount
argen = rs.Fields("argent")
' on ajoute à la suite les 3 champs... c'est juste une autre syntaxe...
Grille1.AddItem rs.Fields("date") & vbTab & rs.Fields("motif") & vbTab & argen
Grille1.row = Grille1.Rows - 1
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 20 juil. 2006 à 14:35
Il faut appliquer la couleur à la ligne courante.Pour celà il faut te positionner sur cette ligne.
Essaye plutôt:
Grille1.Rows = i+ 1
Grille1.Row=i
Grille1.TextArray(faIndex(i,0))=rs.Fields("date")
Grille1.TextArray(faIndex(i,1))=rs.Fields("motif")
Grille1.TextArray(faIndex(i,2))=rs.Fields("argent")
et c' est après qu'il faut appliquer le BackColor
Grille1.BackColor = vbRed ou VbGreen.
Si ça marche pas écris cette dernière instruction juste après Grille1.Row=i.
A+
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 juil. 2006 à 03:20
salut,
çà donne quoi çà?
Dim lCol As Long
For i = 1 To rs.RecordCount
Grille1.AddItem rs.Fields("date") & vbTab & rs.Fields("motif") & vbTab & rs.Fields("argent")
Grille1.Rows = Grille1.Rows + 1
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006 21 juil. 2006 à 18:47
ca me donne la première ligne ds la bonne couleur, puis ca saute une ligne avant de mettre la suivante et les autres lignes ne sont pas en couleur! et aussi en passant euh tu pourré un pti peu développé ton code stp (expliqué) parce que c'est pas que j'ai rien compris hein mais presque xD
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006 21 juil. 2006 à 18:58
je te mets tout le code de la flexgrid
---------------------------------------------------------------------------------------------------------
conte = Form1.cmb_compte.Text
frm_historique.Caption = "Historique du " & conte
Dim argen As Integer
Dim i As Integer
Grille1.Rows = 1
Grille1.ColWidth(0) = 500
Grille1.TextArray(faIndex(0, 0)) = "Date de l'opération"
Grille1.TextArray(faIndex(0, 1)) = "Libellé"
Grille1.TextArray(faIndex(0, 2)) = "débit"
Grille1.ColWidth(0) = 1550
Grille1.ColWidth(1) = 2650
Grille1.ColWidth(2) = 650
i = 0
Set db = OpenDatabase(App.Path & "\gestion_97.mdb")sql "SELECT * FROM tbl_gestion WHERE compte'" & conte & "' ORDER BY id DESC"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
Dim lCol As Long
argen = rs.Fields("argent")
For i = 1 To rs.RecordCount
Grille1.AddItem rs.Fields("date") & vbTab & rs.Fields("motif") & vbTab & rs.Fields("argent")
Grille1.Rows = Grille1.Rows + 1
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 juil. 2006 à 19:01
essai en enlevant cette ligne :
Grille1.Rows = Grille1.Rows + 1
Dim lCol As Long 'variable pour la couleur
For i = 1 To rs.RecordCount
' on ajoute à la suite les 3 champs... c'est juste une autre syntaxe...
Grille1.AddItem rs.Fields("date") & vbTab & rs.Fields("motif") & vbTab & rs.Fields("argent")
' se positionne sur la dernière ligne mais bon....., à dégager?
'Grille1.Rows = Grille1.Rows + 1
' on se positionne sur chaque colonne une a une et on change la couleur
' de text de la cellule sélectionnée
Grille1.Col = 0: Grille1.CellForeColor = lCol
Grille1.Col = 1: Grille1.CellForeColor = lCol
Grille1.Col = 2: Grille1.CellForeColor = lCol
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006 21 juil. 2006 à 19:11
alors si je met argent ds la boucle, ben la couleur n'est pas la bonne! le problème de ligne est réglé mais ca n'affiche toujours la couleur que sur la première ligne !!
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006 21 juil. 2006 à 19:52
j'ai mis un pti label pour voir ce que donnait la valeur argen, si on ne l'a met pas dans la boucle , ell donne lea première valeur de la bdd et si on la met dans la boucle, ca donne la dernière valeur de la bdd
en fait, ça ne vérifie pas ligne par ligne
je crois que je vais laisser tomber la coloration, meme si j'ai horreur de laissé tombé quelque chose! tant pis ! si jamais t'a une autre idée surtout tu fai partagé hein :D !!
novicekiller
Messages postés64Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention23 juillet 2006 23 juil. 2006 à 22:15
ok ca marche ;) je te remerci pour les erreurs en effet j'ai rien vérifié mais j'ai fais ça dans la précipitation et ayant 2taff en ce momen je fé de grosse journée et je taff 7j/7 donc tant que ça marche ben ca me convient pour l'instant, tu peux meme voir que le logiciel est vraiment très simple !