Affichage en rouge dans un MSHFlexGrid

cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008 - 23 juil. 2008 à 16:45
cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008 - 25 juil. 2008 à 08:37
Bonjour a tous,

Voila je fais une requete :
rsMaDb.Open "SELECT code_produit, libelle_produit, Nom_fournisseur, type_produit, qte_stock, seuil_alerte FROM produits where ((produits.domaine_produit) like '" & Tmp_CB_categorie & "') and ((produits.Nom_fournisseur) like '" & Tmp_CB_fournisseur & "') ;", cnMaDb, adOpenKeyset, adLockBatchOptimistic

ça alimente une MSHFlexGrid

Je voudrai que l'affichage de la ligne soit en rouge quand qte_stock<seuil_alerte


Je fais ce code là, mais juste la 1ere instance se trouve en rouge


  Dim iPnt As Integer
    For iPnt = 1 To MSHFlexGrid.Rows - 1
       If MSHFlexGrid.TextMatrix(iPnt, 4) < MSHFlexGrid.TextMatrix(iPnt, 5) Then
              MSHFlexGrid.Col = 4
                MSHFlexGrid.CellForeColor = &HFF&
            End If
    Next
    MSHFlexGrid.Refresh

Auriez-vous une idée et merci d'avance

6 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
23 juil. 2008 à 18:59
Salut,
 il faut se positionner sur la ligne..

Dim iPnt As Integer
    For iPnt = 1 To MSHFlexGrid.Rows - 1
       If MSHFlexGrid.TextMatrix(iPnt, 4) < MSHFlexGrid.TextMatrix(iPnt, 5) Then
              MSHFlexGrid.Row = iPnt
              MSHFlexGrid.Col = 4
                MSHFlexGrid.CellForeColor = &HFF&
            End If
    Next
   <strike> MSHFlexGrid.Refresh
</strike>

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008
24 juil. 2008 à 09:08
Bonjour,

Merci libre_max de te pencher sur le pb, mais là, du coup, j'ai toute la colonne en rouge comme s'il ne tenanit pas compte de

If MSHFlexGrid.TextMatrix(iPnt, 4) < MSHFlexGrid.TextMatrix(iPnt, 5) Then

qui dit que c'est juste quand  la colonne 4 de l'enregistrement est inférieur a la colonne 5 de ce même enregistrement.

Merci 
0
cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008
24 juil. 2008 à 11:55
Bonjour,

Bon après bien des recherches, je me suis aperçu que seul le signe '=' ou '<>' marche dans ce code.

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
 
If MSHFlexGrid.TextMatrix(iPnt, 4) = MSHFlexGrid.TextMatrix(iPnt, 5)
 

<!-- END TEMPLATE: bbcode_code -->J'en deduis donc qu'il récupere des valeurs texte et non numériques alors que je lui demande un '<' donc ça ne marche pas.

Question, comment extraire le code ASCII de mon (iPnt, 4) et (iPnt, 5)

Merci a tous

<!-- / message -->
0
cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008
24 juil. 2008 à 13:57
Trouvé,

C'est le Cint qui me génait.

Voici le code au cas ou ça interesse quelqu'un

Dim iPnt As Integer
        For iPnt = 1 To MSHFlexGrid.Rows - 1
              MSHFlexGrid.Row = iPnt
                If CInt(MSHFlexGrid.TextMatrix(iPnt, 4)) <= CInt(MSHFlexGrid.TextMatrix(iPnt, 5)) Then
                        MSHFlexGrid.Col = 4
                        MSHFlexGrid.CellForeColor = &HFF&
                End If
        Next
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
24 juil. 2008 à 20:58
Bonsoir, Bien vu pour la conversion en Integer.
Seulement il faudra faire attention aux cellules qui peuvent être vides.(sans parler du fait que le contenu ne peut être que des chiffres)

CInt("") **==>Erreur !

Deux solutions au choix :
-Avant de comparer
1° On Error Resume Next tout au début.
2° Ou bien instaurer un test 
Dim iPnt As Integer
 For iPnt = 1 To MSHFlexGrid.Rows - 1
     MSHFlexGrid.Row = iPnt

 If (MSHFlexGrid.TextMatrix(iPnt, 4)) <>"" And  _(MSHFlexGrid.TextMatrix(iPnt, 5))<>"" Then 

   If CInt(MSHFlexGrid.TextMatrix(iPnt, 4)) <= CInt(MSHFlexGrid.TextMatrix(iPnt, 5)) Then
          MSHFlexGrid.Col = 4
          MSHFlexGrid.CellForeColor = &HFF&
    End If
 End If
 Next
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
cyberall80 Messages postés 27 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 25 juillet 2008
25 juil. 2008 à 08:37
Bonsoir et merci pour tes précisions LIBRE_MAX
0
Rejoignez-nous