Simplifier formule

Bonjour à tous et toutes,

Je débute, j'ai une formule mais je n'arrive pas à la simplifier, si vous pouvez m'aider svp.

Voici le code :

=ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H19);trame(Paramètre!H19))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H21);trame(Paramètre!H21))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H22);trame(Paramètre!H22))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H23);trame(Paramètre!H23))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H24);trame(Paramètre!H24))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H25);trame(Paramètre!H25))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H26);trame(Paramètre!H26))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H27);trame(Paramètre!H27))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H28);trame(Paramètre!H28))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H29);trame(Paramètre!H29))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H30);trame(Paramètre!H30))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H31);trame(Paramètre!H31))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H32);trame(Paramètre!H32))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H33);trame(Paramètre!H33))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H34);trame(Paramètre!H34))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H35);trame(Paramètre!H35))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H36);trame(Paramètre!H36))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H37);trame(Paramètre!H37))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H38);trame(Paramètre!H38))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H39);trame(Paramètre!H39))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H40);trame(Paramètre!H40))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H41);trame(Paramètre!H41))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H42);trame(Paramètre!H42))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H43);trame(Paramètre!H43))+ComptecouleurFondtrame(D13:AH13;couleurfond(Paramètre!H44);trame(Paramètre!H44))

macro utilisé :

Function SommeCouleurFondTrame(champ As Range, CouleurFond, TrameFond)
    Application.Volatile
    Dim c, temp
    temp = 0
    For Each c In champ
      If c.Interior.Pattern = TrameFond And c.Interior.ColorIndex = CouleurFond Then
         temp = temp + c.Value
      End If
    Next c
    SommeCouleurFondTrame = temp
End Function
Function Trame(c)
 Trame = c.Interior.Pattern
End Function
Function CouleurFond(c)
  CouleurFond = c.Interior.ColorIndex
End Function
Function CompteCouleurFondTrame(champ As Range, CouleurFond, TrameFond)
    Application.Volatile
    Dim c, temp
    temp = 0
    For Each c In champ
      If c.Interior.Pattern = TrameFond And c.Interior.ColorIndex = CouleurFond Then
         temp = temp + 1
      End If
    Next c
    CompteCouleurFondTrame = temp
End Function
Function NbColor(ByRef Plage As Range, Couleur As Byte) As Long
    Dim c As Range
    Dim nb As Long
    nb = 0
    For Each c In Plage
        If c.Interior.ColorIndex = Couleur Then
            nb = nb + 1
        End If
    Next c
    NbColor = nb
End Function

Function NbColorSameAs(ByRef Plage As Range, ByRef Cellule As Range) As Long
    NbColorSameAs = NbColor(Plage, Cellule.Interior.ColorIndex)
End Function

Function NbColorText(ByRef Plage As Range, ByRef Couleur As Byte, text As String) As Long
    Dim c As Range
    Dim nb As Long
    nb = 0
    For Each c In Plage
        If c.Interior.ColorIndex = Couleur And c.Value = text Then
            nb = nb + 1
        End If
    Next c
    NbColorText = nb
End Function

Function NbColorAndTextSameAs(ByRef Plage As Range, ByRef Cellule As Range) As Long
    NbColorAndTextSameAs = NbColorText(Plage, Cellule.Interior.ColorIndex, Cellule.Value)
End Function

Bonjour,

A mon avis, tu devrais fournir un classeur illustrant exactement la question à résoudre, et en partant de la question on pourra chercher la solution la plus simple adéquate à son objet !

Soit une fonction personnalisée renvoyant le résultat voulu, soit une autre procédure... mais inutile de bricoler sur un truc mal emmanché...

Cordialement.

En gros, la formule fonctionne mais je pense qu'il est possible de la simplifier.

Je dois tout simplement compter le nombre de couleurs sur une ligne/tableau a partir de couleurs référents (une vingtaine de couleurs différentes).

En gros, la formule fonctionne mais je pense qu'il est possible de la simplifier.

Tant mieux si elle fonctionne ! Je dois dire que, vu sa taille, je n'aurais même pas cherché à commencer à l'écrire... !

Alors il est peut-être possible de la simplifier ! Mais pour cela il faut l'analyser ! Et l'analyse prendra autant de temps que l'écrire, et en plus cela sera vraisemblablement fastidieux comme activité ! Tu comprendras donc que je ne suis pas volontaire pour cela !

Le calcul est que reprendre la question à zéro risque fort de prendre moins de temps pour trouver une solution plus simple, et de plus le travail sera nécessairement plus intéressant...

Cordialement.

Bonjour,

simplifier ta formule telle qu'est écrite ta fonction non.

Modifier ta fonction pour qu'elle accepte des matrices pour CouleurFond et TrameFond oui.

Ce qui te permettra de faire ta formule en l'utilisant qu'une seule fois.

D'ailleurs pourquoi 2 paramètres alors que tu récupères trame et fond dans la même cellule ?

eric

bonjour à tous

compter des couleurs, c'est ce qu'on fait sur papier

en informatique on gère des données saisies sous forme de texte.

les couleurs affichées sont créées par le logiciel : les MFC. Les couleurs ne sont pas les données.

(les photos, le son et les dessins font exception)

on ne compte donc pas les couleurs, mais on compte les données ayant certaines caractéristiques (avec des SOMMEPROD ou des TCD)

Bonjour,

En téléchargeant "Fonctions complémentaires XLP" j'ai pu faire ce que je voulais sans problème.

=NB_COLORE(D15:AH15)-NB_COULEUR(D15:AH15;255)

La première ligne du code additionne toutes les couleurs dans une plage donné, ensuite j'extrait la couleur Rouge(255) dans la somme.

Par contre j'ai un petit soucis, ou doit être installé les "Fonctions complémentaires XLP", car lorsque je ferme et je rouvre le fichier les formules prennent cette forme "='C:\Users\USER\Downloads\pack_de_fonctions_xlp\Pack de fonctions XLP.xlam'!NB_COLORE(D15:AH15)-'C:\Users\USER\Downloads\pack_de_fonctions_xlp\Pack de fonctions XLP.xlam'!NB_COULEUR(D15:AH15;255)

Je pense que le pack doit être installé dans un endroit spécifique ?

Merci, pour vos réponses.

J'ai été trop vite en cliquant dessus.

La procédure d'installation est ici https://www.excel-pratique.com/fr/fonctions-complementaires/installation-macro-complementaire.php

Donc tout c'est arrangé,

Rechercher des sujets similaires à "simplifier formule"