Microsoft 365 Compter des éléments spécifiques dans une diagonale

ricoben

XLDnaute Nouveau
Bonsoir,
Existe t il une syntaxe plus élégante de compter en diagonale le nombre d'éléments qui matche avec une certaine valeur, sans tester chaque cellule de chaque diagonale?
Je vous ai mis un exemple en excel sur ce que je cherche à faire.
En gros ca serait un mix de nb.si avec Tableau filtré sur les cellules de la diagonale, qui matche avec le caractère "+" par exemple).
Merci d'avance pour votre aide,
Eric
 

Pièces jointes

  • Classeur1.xlsx
    10.6 KB · Affichages: 13

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @ricoben :),

Formule en C20 à recopier vers la droite :
=SOMMEPROD(($C$4:$O$16="+")*(LIGNE($C$4:$O$16)+COLONNE($C$4:$O$16)-3-4=C$19))

Formule analogue en C21 en remplaçant l'expression "+" par "-".

nota : La première cellule de la plage est la cellule C4.
C4 correspond à la 4° ligne et à la colonne.
C'est pourquoi on retire 3 et 4 dans la formule (car la première diagonale commence à la cellule C4 et son index est 0 -> diagonale 0).
 

Pièces jointes

  • ricoben- compter dans diagonales- v1.xlsx
    11.9 KB · Affichages: 5
Dernière édition:

ricoben

XLDnaute Nouveau
Merci @mapomme, c'est très clair pour moi. j'en ai fait une extension qui fonctionne bien sur le même principe en conditionnant les + ou moins à une métrique quelconque.
 

Pièces jointes

  • ricoben- compter dans diagonales_par rapport à une métrique.xlsx
    19.1 KB · Affichages: 1
Dernière édition:

ricoben

XLDnaute Nouveau
Suite de mon sujet, je veux désormais exclure les cellules colorées du comptage des diagonales. en utilisant la même formule sommeprod avec un filtre "couleur"... ca bugge. Merci
 

Pièces jointes

  • ricoben- compter dans diagonales_par rapport à une métrique, sans tenir comptes des cellules ...xlsm
    22.8 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Il me semble que votre fonction Couleur(Couleur(Plg As Range) n'est pas correcte.
La fonction devrait retourner un tableau de même dimension que la plage en argument (range Plg).

Essayez cette fonction :
VB:
Function Couleur(Plg As Range)
Dim i&, j&
   Application.Volatile True
   ReDim tb(1 To Plg.Rows.Count, 1 To Plg.Columns.Count)
   For i = 1 To Plg.Rows.Count: For j = 1 To Plg.Columns.Count: tb(i, j) = Plg(i, j).Interior.ColorIndex: Next j, i
   Couleur = tb
End Function

nota : un changement de couleur ne provoque pas d'évènement intercepté et traité par Excel. L'instruction Application.Volatile True n'assure en rien le re-calcul automatique après avoir modifié la couleur d'une cellule et c'est bien dommage 😢.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 136
Membres
112 667
dernier inscrit
foyoman