Couleur msgrid [Résolu]

Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 21 janv. 2016 à 22:41
Bonjour,


-- j'utilise un contrôle msflexgrid que j'aimerais changer la couleur selon le critère payer ou impayer ..??aidez moi svp
Afficher la suite 

6 réponses

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
26
0
Merci
Bonjour

De mémoire tu dois avoir un propriété CellBackColor qui permet de changer la cellule selectionnée.
Commenter la réponse de cs_Robert33
Messages postés
13818
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 octobre 2019
308
0
Merci
Bonjour quelle version de VB?
VB6, VB.Net, VBA, VBS?
Commenter la réponse de Whismeril
Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017
0
Merci
vb6 merci c'est déja regler

--
Commenter la réponse de viftro
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Il est alors bien :
- de montrer la solution apportée (tu es ici sur un forum d'échanges)
- de libérer la présente discussion (un clic sur le tag RESOLU au niveau de ton 1ert message).

PS : j'ai par ailleurs déplacé cette discussion vers le sous-forum VB6 où elle aurait dû être ouverte.
J'observe à ce propos qu'aujourd'hui encore, tu viens d'ouvrir une discussion dans le forum GENERAL Visual Basic (ce qui ne permet pas de savoir sous quoi tu développes exactement).

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017
0
Merci
--lOrgRow = MSGrid.Row
lOrgCol = MSGrid.Col

For lRow = MSGrid.FixedRows To MSGrid.Rows - 1
MSGrid.Row = lRow

If MSGrid.TextMatrix(lRow, 9) = "payer" Or MSGrid.TextMatrix(lRow, 9) = "PAYER" Then



lColor = vbGreen
Else

If MSGrid.TextMatrix(lRow, 9) = "impayer" Or MSGrid.TextMatrix(lRow, 9) = "IMPAYER" Then


lColor = vbRed
Else
lColor = vbWhite
End If
End If
For lCol = MSGrid.FixedCols To MSGrid.Cols - 1
MSGrid.Col = lCol
MSGrid.CellBackColor = lColor
Next lCol
Next lRow
vb95
Messages postés
1946
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 octobre 2019
68 -
C'est plus clair avec les balises de codes et l'indentaton

lOrgRow = MSGrid.Row
lOrgCol = MSGrid.Col
For lRow = MSGrid.FixedRows To MSGrid.Rows - 1
    MSGrid.Row = lRow
    If MSGrid.TextMatrix(lRow, 9) = "payer" Or MSGrid.TextMatrix(lRow, 9) = "PAYER" Then
        lColor = vbGreen
    Else
        If MSGrid.TextMatrix(lRow, 9) = "impayer" Or MSGrid.TextMatrix(lRow, 9) = "IMPAYER" Then
            lColor = vbRed
        Else
            lColor = vbWhite
        End If
    End If
    For lCol = MSGrid.FixedCols To MSGrid.Cols - 1
       MSGrid.Col = lCol
        MSGrid.CellBackColor = lColor
     Next lCol
Next lRow
Commenter la réponse de viftro
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour,
Ce qui devrait s'écrire plus efficacement et plus clairement ainsi (j'écris à main levée ... et à tester, donc ...)

dim lrow as integer, lcol as integer
with MSGrid
for lrow = .fixedrows to .rows - 1
coul = vbwhite
select case ucase(.textmatrix(lrow, 9))
case "PAYER"
coul = vbgreen
case "IMPAYER"
coul = vbred
case else
coul = vbwhite
end select
for lcol = .fixedcols To .cols - 1
.col = lcol
.row = lrow
.cellBackcolor = coul
next
next
end with


PS : tu n'as toujours pas libéré cette discussion. Fais-le s'il te plait en cliquant sur le tag RESOLU comme demandé plus haut.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu