Comptage particulier de lignes

Fermé
NoviceVBA2017 Messages postés 26 Date d'inscription dimanche 29 janvier 2017 Statut Membre Dernière intervention 6 mai 2019 - 9 janv. 2019 à 19:35
NoviceVBA2017 Messages postés 26 Date d'inscription dimanche 29 janvier 2017 Statut Membre Dernière intervention 6 mai 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 :-)

5 réponses

ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
9 janv. 2019 à 20:26
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).
1
NoviceVBA2017 Messages postés 26 Date d'inscription dimanche 29 janvier 2017 Statut Membre Dernière intervention 6 mai 2019
Modifié le 9 janv. 2019 à 21:52
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))
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
9 janv. 2019 à 22:11
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 ?
0
NoviceVBA2017 Messages postés 26 Date d'inscription dimanche 29 janvier 2017 Statut Membre Dernière intervention 6 mai 2019
9 janv. 2019 à 22:26
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NoviceVBA2017 Messages postés 26 Date d'inscription dimanche 29 janvier 2017 Statut Membre Dernière intervention 6 mai 2019
9 janv. 2019 à 23:14
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.
0