Simplifier formule. Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
melo77
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 septembre 2017
Version d'Excel : 2016

Message par melo77 » 4 septembre 2017, 10:28

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))
m
melo77
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 septembre 2017
Version d'Excel : 2016

Message par melo77 » 4 septembre 2017, 11:01

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
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 446
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 4 septembre 2017, 11:25

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 ! :D

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.
m
melo77
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 septembre 2017
Version d'Excel : 2016

Message par melo77 » 4 septembre 2017, 11:39

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).
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 446
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 4 septembre 2017, 22:31

En gros, la formule fonctionne mais je pense qu'il est possible de la simplifier.
Tant mieux si elle fonctionne ! :D 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 ! :mrgreen:

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.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'308
Appréciations reçues : 388
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 5 septembre 2017, 00:00

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
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'603
Appréciations reçues : 251
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 5 septembre 2017, 09:20

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)
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
m
melo77
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 septembre 2017
Version d'Excel : 2016

Message par melo77 » 5 septembre 2017, 17:40

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.
m
melo77
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 4 septembre 2017
Version d'Excel : 2016

Message par melo77 » 5 septembre 2017, 18:32

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

La procédure d'installation est ici https://www.excel-pratique.com/fr/fonct ... ntaire.php

Donc tout c'est arrangé,
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message