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 !
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é,