cs_Rifton007
Messages postés52Date d'inscriptionsamedi 28 août 2004StatutMembreDernière intervention13 juin 2009
-
14 juil. 2006 à 01:53
TomIlliev
Messages postés86Date d'inscriptionvendredi 27 décembre 2002StatutMembreDernière intervention13 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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
TomIlliev
Messages postés86Date d'inscriptionvendredi 27 décembre 2002StatutMembreDernière intervention13 octobre 20162 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