Bonjour à tous,
J'ai écumé tous les forums, testé toutes les syntaxes proposées mais ne trouve pas la réponse à mon problème...
En VBA, je cherche à retrouver le nombre de valeurs uniques (nombre de "code" unique sur le fichier joint, colonne A) pour une référence donnée (colonne U).
Pour cela, j'ai tenté de combiner les fonctions SumProduct et Countif, sans succès.
J'ai donc choisi d'effectuer le traitement en deux parties, en partant d'un exemple (fructueux) sur Excel :
1/ NB.SI (colonne U, Référence) / NB.SI.ENS (colonne U, Référence, colonne A, code)
Puis
2/ SOMME.SI(colonne U, ma Référence, Résultat du 1) / NB.SI(colonne U, ma Référence)
Lorsque je transpose ces formules en VBA (avec CountIf et SumIf), la macro traite les données et je n'ai pas d'erreur d'exécution mais le résultat renvoyé n'est pas le bon.
Pour essayer de comprendre pourquoi, j'ai décomposé ma formule et me suis rendue compte que ma fonction Countif ne me renvoyait pas les valeurs souhaitées.
En effet, si je teste COUNTIF seul sur un exemple (fichier ci-joint avec résultat de la macro en colonne U et V) : Au lieu d'avoir, pour la première occurence, le nombre d'occurence de la valeur dans la colonne, la formule se comporte comme si elle écrivait seulement le nombre d'occurence rencontrée.. Comme si elle ne prenait pas l'intégralité de la plage. Je vous invite à regarder le fichier ci-joint, illustrant mon propos. Extraction_BB.xlsx
Pour résumer, pour une occurrence apparaissant 4 fois, au lieu d'avoir "4" sur les lignes concernées, j'ai :
occ1 1
occ1 2
occ1 3
occ1 4
Le code de ma macro est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim FichierED As Workbook Dim Der_lign As Integer Dim X As Integer For X = 2 To Der_lign FichierED.Worksheets(1).Cells(X, 21).Value = Cells(X, 4) & Cells(X, 7) 'la colonne U est la concaténation des colonnes D et G FichierED.Worksheets(1).Cells(X, 22).Formula = WorksheetFunction.CountIf(Range("U:U"), Cells(X, 21).Value) Next X
Je ne comprend vraiment pas pourquoi Countif ne considère pas la totalité de la colonne.. J'ai essayé différentes syntaxes mais rien n'y fait. Quelqu'un peut-il m'éclairer ?
Je vous remercie par avance.
Bonne journée
Partager