Toujours Urgent§§ Valeur mAXI et MINI dans un tableau

cs_kate1 Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 17 mars 2004 - 26 févr. 2004 à 11:48
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 26 févr. 2004 à 14:57
Bonjour,

J'ai besoin d'aide car je n'y arrive plus!!!
J'ai construit un tableau MSHFlexgrid de plusieurs colonnes avec un nombre de ligne variable et une fois le tableau rempli par des données provenant de l'extérieur, j'aimerais en extraire les valeurs maxi et mini ..en vain!!
J'essaye de rechercher la valeur maximum puis minimum d'une colonne (i, 3) d'un mshflexgrid mais ma boucle s'arrête à la première valeur supérieure aux données qui l'encadrent (i-1 et i+1). Pourriez vous me dire ou se trouve mon erreur et comment y remédier. Voilà mon programme:

i As Integer
Dim Dmax

Dmax=Mshflexgrid1.TextMatrix(1.3)

For i =1 To Mshflexgrid1.Rows-1
If Dmax>Mshflexgrid(i,3) Then
Dmax=Mshflexgrid.TextMatrix(i,3)
End if
Next i
lbMaxi.Caption=Dmax

...et de même avec la valeur minimum

Ps: les données de mes colonnes ne sont pas triéeset je ne compte pas le faire (car elles me permettent de construire un graphique!), elles ont une valeur aléatoire.

merci d'avance!!

Catherine
catherine

12 réponses

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 12:12
Bonjour
Ma réponse s'est perdue en route ...
Bien que je ne connaisse pas Mshflexgrid, une piste :

Dim i As Integer, Dmax, Dmin
Dmax = Mshflexgrid1.TextMatrix(1.3)
Dmin = Dmax

For i = 0 To Mshflexgrid1.Rows - 1
' ou bien For i = 1 To Mshflexgrid1.Rows ????
If Dmax < Mshflexgrid(i,3) Then Dmax = Mshflexgrid.TextMatrix(i,3)
If Dmin > Mshflexgrid(i,3) Then Dmin = Mshflexgrid.TextMatrix(i,3)
Next i
lbMaxi.Caption=Dmax
lbMini.Caption=Dmin
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 12:13
et en relisant :
If Dmax < Mshflexgrid.TextMatrix(i, 3) Then Dmax = Mshflexgrid.TextMatrix(i,3)
If Dmin > Mshflexgrid.TextMatrix(i, 3) Then Dmin = Mshflexgrid.TextMatrix(i,3)
0
cs_kate1 Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
26 févr. 2004 à 12:25
merci mais ça ne marche pas ( au fait, le end if, est ce que tu l'as oublié ou est ce que je dois essayer comme ça?)
désolé, je débute!!
une autre suggestion peut-être?
catherine
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 12:39
Pas besoin de "End If" si le "If ... Then ..." est sur une seule ligne.
MSHFlexGrid1.TextMatrix(1, 3) est un texte.
Pour faire des comparaisons, il faut le transformer en nombre en trouvant sa valeur : Val(MSHFlexGrid1.TextMatrix(1, 3))

Après essais, voici un code qui marche :

Dim i As Integer, Dmax, Dmin
Dmax = Val(MSHFlexGrid1.TextMatrix(1, 3))
Dmin = Dmax
For i = 1 To MSHFlexGrid1.Rows - 1
If Dmax < Val(MSHFlexGrid1.TextMatrix(i, 3)) Then Dmax = MSHFlexGrid1.TextMatrix(i, 3)
If Dmin > Val(MSHFlexGrid1.TextMatrix(i, 3)) Then Dmin = MSHFlexGrid1.TextMatrix(i, 3)
Next i
lbMaxi.Caption = Dmax
lbMini.Caption = Dmin
0

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

Posez votre question
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 12:43
il serait peut-être encore mieux d'écrire :

If Dmax < Val(MSHFlexGrid1.TextMatrix(i, 3)) Then Dmax = Val(MSHFlexGrid1.TextMatrix(i, 3))
If Dmin > Val(MSHFlexGrid1.TextMatrix(i, 3)) Then Dmin = Val(MSHFlexGrid1.TextMatrix(i, 3))
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
26 févr. 2004 à 13:05
salut j'ai deja du repondre au meme message mais sur un autre envoi de la question plus loin ..... pk ne pas utiliser le "IIf (comparaison, valeur si vrai , valeur si faux)"?
liquide
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 13:17
"pk ne pas utiliser le "IIf (comparaison, valeur si vrai , valeur si faux)"?"
Parce-que "valeur si faux" consiste à ne rien modifier !
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
26 févr. 2004 à 13:22
ca ne change rien tu remets en si faux la meme valeur
liquide
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
26 févr. 2004 à 13:29
C'est bien ce que je dis : ça n'apporte rien de plus.
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
26 févr. 2004 à 13:35
et bien si en rapidité par rapport au if et un gain de temps en ecriture et souvent differents plantages, si ca c'est rien de plus !
en 2 lignes (dmax,dmin)ca fait tout ce que tu fais en 4 lignes
enfin "c'est vous qui voyez"
liquide
0
cs_kate1 Messages postés 23 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 17 mars 2004
26 févr. 2004 à 14:16
merci pour les infos!
j'ai finalement essayé la "méthode de rené38" qui fonctionne dans mon programme en tout cas..merci à lui
catherine
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
26 févr. 2004 à 14:57
kat t'es bien sectaire !!!
liquide
0
Rejoignez-nous