Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonction countif en VBA pour une liste de données

Syntholl

XLDnaute Nouveau
Bonjour à tous,

Je cherche a faire dans une macro VBA l'équivalent de la fonction NB.SI dans une boucle Pour.

Le contexte:
Dans la feuille A, j'ai la liste de biens industriels.
Dans la feuille B, j'ai la liste des dépannages ayant eu lieu sur ces biens.

Ce que je recherche est la chose suivante: rajouter en fin de tableau (feuille UI) un colonne avec le nombre de dépannages faits (issus de la feuille BT) par bien.

Avec une fonction NB.SI sous Excel, ça marche très bien, mais ce que je désire faire c'est automatisé ce calcul afin de tenir compte du nombre aléatoire de lignes dans les 2 feuilles. (fichier Ex joint)

Je sais que la fonction COUNTIF permet de faire cela en VBA mais je me retrouve bloqué car comment faire pour que la copie se fasse sur l'ensemble des données de la feuille UI (à terme c'est plus de 12000 lignes qui devront être gérées dans la feuille UI).

Question subsidiaire: comment faire pour rajouter une seconde condition d'analyse?

Je suis arrivé à écrire le début:
Range("M1").ActiveCell = "Nb de BTs"
NbBT = Sheets("BASE_Macro").Range("B3").Value

Sheets("BT").Columns("K:K").Select
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight


Sheets("UI").Select
Range("M2").Select
For i = 2 To NbBT
Application.WorksheetFunction.CountIf(Sheets("BT").Columns("A:A"), Sheets("UI").Cells(i, 1)).Value = Cells(i, 11)
Next​


C'est ma boucle FOR qui je pense ne fonctionne pas. Merci de votre aide.
 

Pièces jointes

  • Ex.xlsx
    21.5 KB · Affichages: 44
  • Ex.xlsx
    21.5 KB · Affichages: 47
  • Ex.xlsx
    21.5 KB · Affichages: 52

stefan373

XLDnaute Occasionnel
Re : fonction countif en VBA pour une liste de données

Bonjour synthol et le forum,

Sans être un expert, vous faites référence à la feuille BASE_Macro, mais elle n'existe pas dans votre fichier.
A vérifier.

A+ Stéfan
 

Syntholl

XLDnaute Nouveau
Re : fonction countif en VBA pour une liste de données

Bonjour Stefan373,

En effet, j'ai fait une petite erreur dans le fichier.

La feuille BASE_Macro ne sert qu'à quantifier les différents éléments que nous serions amenés à utiliser (des listes de références, des quantités dans les listes, le compte de ligne dans les différentes feuilles, etc...)

Ici le Sheets("BASE_Macro").Range("B3").Value doit renvoyer le nombre de ligne non vide dans le la feuille "BT", soit la valeur 90.

Donc comment faire?
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…