Les couleurs ds un flexgrid

Résolu
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 juillet 2006 - 20 juil. 2006 à 13:11
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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 !

-=NoViCeKiLLeR=-

15 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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 

    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) = 1450 
    Grille1.ColWidth(1) = 2650 
    Grille1.ColWidth(2) = 650 

    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 

        lCol =  IIf (LeftB$(argen, 2)  = "+", vbGreen, vbRed) 

        Grille1.col =  1: Grille1.CellForeColor = lCol 
        Grille1.col = 2: Grille1.CellForeColor = lCol 

        rs.MoveNext 
    Next i 

    rs.Close 
End Sub

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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+
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 juillet 2006
21 juil. 2006 à 00:40
mais, ça fait toujours la meme chose !

-=NoViCeKiLLeR=-
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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 

    lCol =  IIf (argen < 0, vbRed, vbGreen) 
    Grille1.Col  = 0: Grille1.CellForeColor =  lCol 
    Grille1.Col = 1: Grille1.CellForeColor = lCol 
    Grille1.Col = 2: Grille1.CellForeColor = lCol 

    rs.MoveNext 
Next i

<small> Coloration
syntaxique automatique [AFCK] </small>
       

++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0

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

Posez votre question
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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

merci

-=NoViCeKiLLeR=-
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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

    lCol = IIf(argen < 0, vbRed, vbGreen)    Grille1.col 0: Grille1.CellForeColor lCol    Grille1.col 1: Grille1.CellForeColor lCol    Grille1.col 2: Grille1.CellForeColor lCol

    rs.MoveNext
Next i

rs.Close
----------------------------------------------------------------------------------------------------

j'esper que ça t'aideras !!
-=NoViCeKiLLeR=-
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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

'   iif (condition vrai, valeur vrai, sinon valeur fausse)
    lCol =  IIf (argen < 0, vbRed, vbGreen) 
'   autre syntaxe :
    'If argen < 0 Then lCol  = vbRed Else lCol =  vbGreen

'   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 

    rs.MoveNext 
Next i

<small> Coloration
syntaxique automatique [AFCK] </small>
       

<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 19:04
tu risques pas d'avoir beaucoup de résultats différents avec argen = rs.Fields("argent") avant la boucle... ;)

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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=-
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2006 à 19:15
peut-être que ton champs "argent" dans la base n'est pas un numérique...

Grille1.Rows = Grille1.Rows + 1
Grille1.Row = Grille1.Rows - 1

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 juillet 2006
21 juil. 2006 à 19:20
non en effet il n'est pas numerique, c'est pour ca que j'ai rajouté plus haut : dim argen as integer

c'est pour faire quoi ça ? :
Grille1.Rows = Grille1.Rows + 1
Grille1.Row = Grille1.Rows - 1

merci merci :)
-=NoViCeKiLLeR=-
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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 !!

merci de m'avoir aidé ;)

-=NoViCeKiLLeR=-
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 juil. 2006 à 16:47
salut,
si tu veux héberge ton projet avec la base (zip) et donne le lien, je regarderai.

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 juillet 2006
23 juil. 2006 à 21:34
je l'ai posté en source sur vbfrance ^^ [javascript:ol('http://www.vbfrance.com/code.aspx?ID=38718'); http://www.vbfrance.com/code.aspx?ID=38718]

merci ;)

-=NoViCeKiLLeR=-
0
novicekiller Messages postés 64 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 23 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 !

voila merci encor a plaus tard

-=NoViCeKiLLeR=-
0
Rejoignez-nous