xiombarg2911
Messages postés14Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention24 avril 2008
-
23 avril 2008 à 10:41
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
24 avril 2008 à 00:23
Bonjour
En travaillant sur ce projet (dont la réponse reste encore à trouver ^^) je me suis mis en tête de compter le nombre de cellule contenant un certain texte.
J'ai donc d'abord ceci dans un module :
Sub GetClasses()
If TypeName(Ctrl) = "CheckBox" Then
If Ctrl.Value = True Then
strTemp = strTemp & Ctrl.Caption & ";"
End If
End If
End Sub
Ca inscrit dans la variable strTemp la propriété Caption des checkbox à la condition qu'elles soient cochées, sachant que je n'ai que 3 checkbox.
Puis j'ai ceci :
Private Sub Bouton2_Click()
Dim n As Integer
Sheets("Feuil2").Select
n = 1
For Each cel In Range("K:K") If cel.Value strTemp Then n n + 1
Next
MsgBox n
End Sub
Et j'ai un message d'erreur : "dépassement de capacité"
Pourtant je n'ai qu'une vingtaine de lignes dans Feuil2 ......
Il faut lui dire de ne compter que dans les cellules qui ont du texte, et pas de boucler indéfiniment sur la colonne K, mais comment ?
Merci d'avance
PS : mon niveau est n00b ! débutant ! bleu ! etc. :)
SeKo54
Messages postés18Date d'inscriptionvendredi 28 mars 2008StatutMembreDernière intervention 5 novembre 2008 23 avril 2008 à 11:45
Bonjour,
Ton instruction suivante me parait bizarre : For Each cel In Range("K:K"). Pour commencer j'aurais plutôt écris Range("Kx: : Kx+y") car il manque un indice de ligne non ? Deplus je suppose que cel est un objet Cells. Il manque également la fin de l'instruction If. Comme je ne suis pas a l'aise avec la boucle For Each, j'aurais écris un truc du genre :
For i =indiceDebutLigne To indiceFinLigne
If Sheets("Feuil2").Cells(i,numcolonne) = strTemp Then
n = n+1
End If
Next i
Biensur ce code suppose que ta plage de donnée est contenue dans la même colonne. En espérant que ca a pu t'aider
xiombarg2911
Messages postés14Date d'inscriptionmercredi 12 septembre 2007StatutMembreDernière intervention24 avril 2008 23 avril 2008 à 11:56
Je me répond à moi-même et je formule une autre question !
Kamoulox !
Puisque je n'avais qu'une seule checkbox dont le caption contient la valeur recherchée, stockée dans strTemp, forcément n était 1 (une seule case une seule caption = une seule fois la valeur)
Mon problème est donc maintenant de compter sur une vingtaine de lignes chaque itération de la valeur contenu dans la variable strTemp
Si quelqu'un peut m'indiquer comment lui signifier de chercher dans la Colonne K ligne après ligne, cela serait grandement apprécié :)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 24 avril 2008 à 00:23
n est déclarée As Integer
Quand tu boucles les lignes d'une feuille, tu dépasses la capacité d'un Integer. Il faut donc déclarer n As Long.
Ça, c'est pour le dépassement.
Dans l'autre message, je t'avais mis, il me semble, la formule pour déterminer le nombre de lignes de données à lire
Cells(Rows.Count, "A").End(xlUp).row
Ton problème provient du fait que les valeurs ne sont jamais identiques... celles de ta variable strTemp et celle de la cellule. C'est là qu'il faut rechercher la cause.
"1" est différent de 1
Si tu pouvais mettre ton fichier sur le web, ce serait sûrement plus facile de t'aider. Ce que tu avais déjà comme réponse aurait dû suffire...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI