Probléme dans le FlexGrid

Résolu
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009 - 14 juil. 2006 à 01:53
TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 - 17 juil. 2006 à 01:53
Bonjour et merci de aide tout d'abord.

Mon code est en phase de test, mais celui-ci comporte déjà une erreur.


Je souhaiterais que celui-ci comptabilise tout les 1 se trouvant dans mon FlexGrid, de la colonne 2 à 6.

Jusqu'a présent sa marche trés bien.


Le seule soucis, c'est que le code comptabilise aussi les nombres comprennant le chiffre 1,

par exemple 14.


C'est sûrment du aufaite que j'utilise le TextMatrix, et donc il
considére son contenue comme une varaible et non pas une valeur.
Comment puis je le forcer à compter seulement les 1.


Voici mon code.

R = 0

MEM = 0

Dim GEN As Long

For GEN = 1 To 1


For R = 0 To DataBase_1.Rows - 1

If DataBase_1.TextMatrix(R, 2) Or DataBase_1.TextMatrix(R, 3) Or
DataBase_1.TextMatrix(R, 4) Or DataBase_1.TextMatrix(R, 5) Or
DataBase_1.TextMatrix(R, 6) = GEN Then

MEM = MEM + 1


End If

Next

M1.Caption = MEM

Next

5 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juil. 2006 à 02:14
Salut,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>






 






essai ça :






 







Dim



Compteur

As


Long

, i

As


Long

, j

As


Long








 







Compteur = 0






For



i = 1

To



DataBase_1.Rows






 


For



j = 2

To



6






   


With



DataBase_1






        .Col = j






        .Row = i






       


If



.Text = "1"

Then



Compteur = Compteur + 1






   


End


With







 
Next

j






Next



i






























@ ++





 





Mortalino
Le mystérieux chevalier, « Provençal, le Gaulois »

Merci de prendre le temps de répondre à ce sondage




 
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juil. 2006 à 03:05
salut,

je corrige l'explication de Mortalino....

if DataBase_1.TextMatrix(R, 2) Or DataBase_1.TextMatrix(R, 3) Or DataBase_1.TextMatrix(R, 4) Or DataBase_1.TextMatrix(R, 5) Or DataBase_1.TextMatrix(R, 6) = GEN Then

en fait çà donne "SI DataBase_1.TextMatrix(R, 6) = GEN
OU que n'importe quelle valeur (de R,2 à R,5) est supérieure à 0 ALORS"

par contre la correction est bonne (juste le with endwith avant les boucles)

ps : c'est pourquoi çà :  For GEN = 1 To 1 ?
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juil. 2006 à 02:18
Ah au fait, j'ai pas fais gaffe :

If DataBase_1.TextMatrix(R, 2) Or DataBase_1.TextMatrix(R, 3) Or DataBase_1.TextMatrix(R, 4) Or DataBase_1.TextMatrix(R, 5) Or DataBase_1.TextMatrix(R, 6) = GEN Then

C'est tout FAUX. La condition ne se vérifie que sur l'élément souligné. Voici la bonne syntaxe :
If DataBase_1.TextMatrix(R, 2) GEN Or DataBase_1.TextMatrix(R, 3) GEN Or _DataBase_1.TextMatrix(R, 4) GEN Or DataBase_1.TextMatrix(R, 5) GEN Or _
DataBase_1.TextMatrix(R, 6) = GEN Then
.....

@ ++
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?> 

Mortalino
Le mystérieux chevalier, « Provençal, le Gaulois »
Merci de prendre le temps de répondre à cesondage
0
cs_Rifton007 Messages postés 52 Date d'inscription samedi 28 août 2004 Statut Membre Dernière intervention 13 juin 2009
15 juil. 2006 à 22:12
Merci beaucoup de votre aide à tous les deux, j'ai reussi.

Concernant le GEN je l'avais laisse à 1 TO 1, mais enfaite c'était de 1 TO 50.
0

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

Posez votre question
TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 2
17 juil. 2006 à 01:53
Salut,
Je viens de voir ton message et j'ai lu les réponses de PcPt et de Mortalino.

J'avais écris une function qui renvoyez le nombre d'occurence d'une valeur numérique ou de texte dans une msFlexGrid.
De plus cette fonction contrairement au code de Mortalino de change pas la sélection encours dans la grille en traitement et de déclenche pas d'événements.

Function CountOccurence(Grille As MSFlexGrid, ByVal ValeurCherche As String, _
Optional ByVal ColDebut As Integer = 0, _
Optional ByVal ColFin As Integer = -1, _
Optional ByVal RowDebut As Integer = 0, _
Optional ByVal RowFin As Integer = -1) As Integer
'-------------------------------------------------------------
'Cette function recherche dans une Grille la ValeurCherche et
'renvoie le nombre d'occurence trouvée.
'-------------------------------------------------------------

Dim C As Integer 'Boucle sur les colonnes
Dim R As Integer 'Boucle sur les lignes
Dim Cpt As Integer 'Compteur d'occurences

With Grille

If RowFin -1 Then RowFin .Rows -1 'Arrange RowFin
If ColFin -1 Then ColFin .Cols - 1 'Arrange ColFin

For C = ColDebut To ColFin 'Boucle sur les colonnes
For R = RowDebut To RowFin 'Boucle sur les Lignes
'Si occurence trouvé j'incrémente le compteur
If .TextMatrix(R, C) ValeurCherche Then Cpt Cpt + 1
Next R
Next C
End With

CountOccurence = Cpt 'Renvoie la valeur du compteur
End Function

Pour appeler la Function
Caption = CountOccurence(DataBase_1,1,2,6)

Voilà, voilà
Si tu veux d'autres tuyaux sur le msflexgrid j'en ai plein!
A+
Tomilliev
0
Rejoignez-nous