Compter nombre de lignes selon un critère
Résolu
Akalia
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Akalia Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Akalia Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis déjà venu pour demander de l'aide pour compter des lignes, mais là c'est différent, j'essaye de compter en fonction du critère dans la colonne. Je m'explique: j'ai une grosse base de données avec plus de 10 000 lignes allant jusqu'au colonnes CX. Mon but est de réaliser des indicateurs, pour cela, en général, une certaine colonne va être le jalon me permettant de définir mon indicateur, (exemple: le statut en "terminé", "lancé", "non lancé"), cependant, je fais déjà un premier tri en VBA, je copie colle les colonnes que je désire voir (environ 10) dans une nouvelle feuille qui sera une nouvelle BDD. Et c'est sur cette BDD que je veux effectuer mes traitements, toujours sur l'exemple des statuts, je veux être capable de compter le nombre de lignes qu'il y a avec le statut "lancé", celles avec le statut "non lancé" et le statut "terminé", et que ça me renvoit la valeur dans une cellule. Là où je bloque sur le code, c'est pour qu'il me calcule le nombre de lignes, je vous donne ce que j'ai pu effectuer.
J'ai beau avoir cherché, j'ai essayé de tordre, modifier mon code avec des solutions existantes, ça ne collait pas du tout avec ce que je désirais. Déjà ce code, ne veut même pas prendre en compte ma condition et me comptait le nombre de lignes avec le statut "Lancé", en revanche il me compte toutes les lignes confondues.
Donc je sais que ça pêche à ce niveau, mais je vois pas comment faire, si déjà je m'y suis bien pris, et si oui comment faire pour arriver à la solution que je recherche.
En vous remerciant d'avance pour prendre le temps de lire mon pavé!
Cordialement,
Je suis déjà venu pour demander de l'aide pour compter des lignes, mais là c'est différent, j'essaye de compter en fonction du critère dans la colonne. Je m'explique: j'ai une grosse base de données avec plus de 10 000 lignes allant jusqu'au colonnes CX. Mon but est de réaliser des indicateurs, pour cela, en général, une certaine colonne va être le jalon me permettant de définir mon indicateur, (exemple: le statut en "terminé", "lancé", "non lancé"), cependant, je fais déjà un premier tri en VBA, je copie colle les colonnes que je désire voir (environ 10) dans une nouvelle feuille qui sera une nouvelle BDD. Et c'est sur cette BDD que je veux effectuer mes traitements, toujours sur l'exemple des statuts, je veux être capable de compter le nombre de lignes qu'il y a avec le statut "lancé", celles avec le statut "non lancé" et le statut "terminé", et que ça me renvoit la valeur dans une cellule. Là où je bloque sur le code, c'est pour qu'il me calcule le nombre de lignes, je vous donne ce que j'ai pu effectuer.
Dim lg as Integer Dim dernligne as Integer Dim n as Integer Dim NbLig As Integer 'variable de ligne pour synthèse lg = 1 'recherche dernière ligne remplie dans Base dernligne = Sheets("Nouvelle BDD").Range("A" & Rows.Count).End(xlUp).Row ' boucle sur les lignes d'Application For n = 1 To dernligne 'si statut correpond à celui déterminé au clic dans bouton option If Sheets("Nouvelle BDD").Range("D" & n).Value = "Lancé" Then 'incrementation de la ligne dans synthèse lg = lg + 1 NbLig = Sheets("Nouvelle BDD").Range("D1", [D1].End(xlDown)).Rows.Count 'Copie dans l'indicateur Sheets("Indicateur OF").Select Range("D6").Select Selection.Value = NbLig4 - 1 'Car je ne désire pas la première valeur puisque c'est l'entête Selection.Copy 'Mise à jour dans bilan Sheets("Bilan des indicateurs").Select Range("D24").Select ActiveSheet.Paste End If Next n
J'ai beau avoir cherché, j'ai essayé de tordre, modifier mon code avec des solutions existantes, ça ne collait pas du tout avec ce que je désirais. Déjà ce code, ne veut même pas prendre en compte ma condition et me comptait le nombre de lignes avec le statut "Lancé", en revanche il me compte toutes les lignes confondues.
Donc je sais que ça pêche à ce niveau, mais je vois pas comment faire, si déjà je m'y suis bien pris, et si oui comment faire pour arriver à la solution que je recherche.
En vous remerciant d'avance pour prendre le temps de lire mon pavé!
Cordialement,
A voir également:
- Compter nombre de lignes selon un critère
- Créer un compte google - Guide
- Nombre de jours entre deux dates excel - Guide
- Partage de photos en ligne - Guide
- Comment créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
2 réponses
Bonjour,
comme tu sembles travaillé que sur la colonne "D" nommée statut, tu aurais attaqué directement sur la BDD originale a moins que tu ais besoin de la nouvelle pour autre chose
Proposition non testée (je n'ai pas ton classeur)
Si problèm dans mon bidouillage
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Michel
comme tu sembles travaillé que sur la colonne "D" nommée statut, tu aurais attaqué directement sur la BDD originale a moins que tu ais besoin de la nouvelle pour autre chose
Proposition non testée (je n'ai pas ton classeur)
Option Explicit
'----------
Sub compter_statuts()
Dim derligne As Integer, T_statut
Dim cptr As Byte, Statut As String
Dim Idx As Integer, Nbre As Integer
Application.ScreenUpdating = False
Dernligne = Sheets("Nouvelle BDD").Range("A" & Rows.Count).End(xlUp).Row
T_statut = Application.Transpose(Range("D2:D" & derlig))
For cptr = 1 To 3
Statut = Choose(cptr, "terminé", "Lancé", "non lancé")
For Idx = 1 To UBound(T_statut)
If T_statut(Idx) = Statut Then nbre = nbre + 1
Next
With Sheets("Indicateur OF")
.Cells(5+cptr,"C")=statut
.Cells(5 + cptr, "D") = nbre
nbre = 0
End With
Next
End Sub
Si problèm dans mon bidouillage
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Michel
Bonjour Michel!
Merci d'avoir réagit une fois de plus pour mon cas, mais du coup, j'ai préféré envoyé mon fichier très très simplifié, car il est plus facile de se concentrer sur ce que je désire faire sur le comptage du nombre de lignes, donc tout est expliqué en commentaire texte. Et j'effectue le comptage avec un bouton commande en première feuille "Choix des indicateurs".
Ci-joint
https://www.cjoint.com/?DGwjsgDWfc0
Merci d'avance.
Merci d'avoir réagit une fois de plus pour mon cas, mais du coup, j'ai préféré envoyé mon fichier très très simplifié, car il est plus facile de se concentrer sur ce que je désire faire sur le comptage du nombre de lignes, donc tout est expliqué en commentaire texte. Et j'effectue le comptage avec un bouton commande en première feuille "Choix des indicateurs".
Ci-joint
https://www.cjoint.com/?DGwjsgDWfc0
Merci d'avance.
En effet, ça marche mieux sans l'espace parasite. Je pense prendre cette solution vu que je travaille en délai très court, mais je vais quand même essayer de trouver comment obtenir la valeur via VBA et non par une formule, car admettons que la bdd change, la formule peut peut être poser problème, et puis j'aime essayer de coder donc je vais chercher!
Merci encore Michel!
Merci encore Michel!