fonction countif en VBA pour une liste de données

  • Initiateur de la discussion Initiateur de la discussion Syntholl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
672
Réponses
5
Affichages
477
Réponses
5
Affichages
567
Retour