Dépassement de capacité

xiombarg2911 Messages postés 14 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 24 avril 2008 - 23 avril 2008 à 10:41
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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. :)

3 réponses

SeKo54 Messages postés 18 Date d'inscription vendredi 28 mars 2008 Statut Membre Derniè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
0
xiombarg2911 Messages postés 14 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 24 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é :)

merci !
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
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
0