Bonjour à tous,
J'ai un gros soucis avec un tableau de données type que je dois traiter et filtrer et je ne suis pas un grand aguerri de Excel.
J'ai des données qui se présentent sous cette forme:
A B C
[...] [...] [...]
20 11 2
21 12 3
22 13 2
23 14 2
24 15 2
25 16 2
26 17 2
27 18 3
28 19 2
29 20 2
30 21 3
31 22 2
32 23 3
33 24 2
[...] [...] [...]
La colonne A correspond au numéro de la ligne, la colonne B au numéro de l'item parmi toute une liste d'items, la colonne C à une valeur que prend cet item (2 ou 3).
Ce que j'ai besoin de faire c'est de dire "Si dans la liste des items n°11 à n°24 (colonne B) [Donc dans le Range de A20 à A33] le nombre de "2" (colonne C) est supérieur à la moitié du nombre de valeurs totales de la colonne C, alors inscrire dans une colonne N "go" quand l'item prend pour valeur "2", sinon inscrire "no-go" (donc quand l'item prend pour valeur "3").
La formule que j'ai trouvé pour une ligne est:
=SI(NB.SI(A20:A33;"=2")>7;SI(A20=2;"GO"; "NOGO"))
Cependant, si j'utilise le petit carré noir pour déployer cette formule sur toute la plage ("D20":"D33"), alors à chaque ligne ça décale d'une ligne, ce qui fait que pour la formule en "D24" je ne suis plus du tout dans la plage ("A20":"A33").
A partir de l'outil "Enregistrer macro" j'ai récupéré le code VBA suivant:
Range("N20").Select
ActiveCell.FormulaR1C1 = _
"=IF(COUNTIF(RC[-12]:R[13]C[-11],""=2"")>7,IF(RC[-12]=2,""GO"", ""NOGO""))"
Range("N20").Select
Selection.AutoFill Destination:=Range("N20:N33"), Type:=xlFillDefault
Range("N20:N33").Select
Et celui-ci me fait la même fonction: décaler le range d'une ligne à chaque fois.
L'un de vous pourrait-il m'aider à résoudre ce problème ? J'imagine que si c'est résolu par le biais d'une formule alors je peux via Enregistrer macro en retirer la macro efficace.
D'avance merci !