Dépassement de capacité

Signaler
Messages postés
14
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
24 avril 2008
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
18
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
5 novembre 2008

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
Messages postés
14
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
24 avril 2008

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