Menu

Comptage particulier de lignes

Messages postés
14
Date d'inscription
dimanche 29 janvier 2017
Dernière intervention
9 janvier 2019
- - Dernière réponse : NoviceVBA2017
Messages postés
14
Date d'inscription
dimanche 29 janvier 2017
Dernière intervention
9 janvier 2019
- 9 janv. 2019 à 23:14
Bonjour à toutes et à tous,

J'ai farfouillé sur ce site et sur d'autres mais je ne parviens pas à obtenir ce que je cherche.
Je m'explique :
j'ai un tableau excel comportant évidemment plusieurs lignes (quelques milliers) et plusieurs colonnes (une 20aine).
Je cherche à compter le nombre de lignes de ce tableau mais selon plusieurs critères de plusieurs colonnes.

J'ai trouvé une fonction très sympa (worksheetfunction countifs) qui je pense se rapproche très fortement de ce que je cherche. Seul bémol, cette fonction compte le nombre de cellules non-vides de la plage, et non le nombre de lignes...

Auriez-vous une idée de la direction à prendre? Je précise que ceci va rentrer dans un code beaucoup plus lourd, jonglant entre différents fichiers eux-même atrocement lourd et faisant ramer le programme. J'ai tenté de passer par du filtrage auto puis de compter le lignes visibles mais c'est finalement parfaitement inenvisageable lorsque je vois à quel point ça ramer voir planter le programme qui n'est d'ailleurs pas fini.

Merci d'avance pour vos lumières ;-)

Bien cordialement,
Le petit NoviceVBA2017 :-)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1483
Date d'inscription
lundi 13 juillet 2009
Dernière intervention
9 janvier 2019
496
1
Merci
Salut,
Tu ne donnes pas beaucoup de détails donc à toi d'adapter cette situation à ta Macro.
Pour connaître le nombre de lignes tu peux utiliser ce bout de ligne :
Cells(1,1).end(xldown).row
Retourne la dernière ligne en A (contiguë à A1).

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56031 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ozone_
Messages postés
14
Date d'inscription
dimanche 29 janvier 2017
Dernière intervention
9 janvier 2019
0
Merci
Bonour Ozone,

Merci pour cette réponse rapide ;-)

Oui effectivement je ne donne pas beaucoup de détails, c'est pour le boulot, j'ai par conséquent la contrainte de la confidentialité.

Pour essayer d'être plus clair sur ma demande, voici donc un exemple (car je connais le bout de code que tu proposes, mais il ne correspond pas exactement à mon besoin) :

https://www.cjoint.com/c/IAjuFjXtmX3

C'est la raison pour laquelle "worksheetfunction countifs" conviendrait presque (par exemple en divisant la valeur obtenue par le nombre de colonne pour obtenir le nombre de lignes). Le problème est que si il y a des cellules vides dans la plage retenue (ce qui serait le cas sur le fichier de travail), ça fausserait le résultat... Je ne sais pas comment m'y prendre.

Une formule excel équivalente serait =NB.SI.ENS
(pour l'exemple du fichier ce serait donc =NB.SI.ENS(A1:A13;C19;B1:B13;C20;C1:C13;C21;D1:D13;C22))
Commenter la réponse de NoviceVBA2017
Messages postés
1483
Date d'inscription
lundi 13 juillet 2009
Dernière intervention
9 janvier 2019
496
0
Merci
Je vois un peu mieux.
Dans ce cas, pourquoi ne pas filtrer ton tableau ensuite de mettre les différents filtres qui t'intéresse dans chaque colonne et pour finir de récupérer l'ensemble des lignes restante ?
Commenter la réponse de ozone_
Messages postés
14
Date d'inscription
dimanche 29 janvier 2017
Dernière intervention
9 janvier 2019
0
Merci
Le filtrage est la première solution à laquelle j'ai pensé. Le problème (qui est bloquant au vu du nombre d'itérations) est le temps de traitement qui est manifestement bien plus important que sur un fonction de comptage.

C'est la raison pour laquelle je cherche une solution sans filtrage. Je souhaiterai plutôt quelque chose du type "worksheetfunction" qui semble être bien plus rapide.
Commenter la réponse de NoviceVBA2017
Messages postés
14
Date d'inscription
dimanche 29 janvier 2017
Dernière intervention
9 janvier 2019
0
Merci
Cependant le choix d'une solution de type "worksheetfunction" n'est qu'une voie "possible" que j'ai pu identifier, il y en a certainement des meilleures.
Commenter la réponse de NoviceVBA2017