Couleur msgrid [Résolu]

Signaler
Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,


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

6 réponses

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

De mémoire tu dois avoir un propriété CellBackColor qui permet de changer la cellule selectionnée.
Messages postés
14426
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
2 avril 2020
365
Bonjour quelle version de VB?
VB6, VB.Net, VBA, VBS?
Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017

vb6 merci c'est déja regler

--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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.
Messages postés
17
Date d'inscription
mercredi 7 septembre 2011
Statut
Membre
Dernière intervention
5 janvier 2017

--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
2099
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
2 avril 2020
89
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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.