Adiitionner des cellules de la même couleur

bonjour

je soit additionner des cellules de couleur (rouge) qui sont en mise en forme conditionnelle

je joint un fichier exemple

juste pour rappel je suis novice sur excel

par avance merci de votre aide

31exemple.xlsm (111.50 Ko)

Bonsoir,

En fait on ne peut compter en fonction de la couleur conditionnelle ! Seul moyen prendre les même conditions de cette MFC et faire le calcul avec ces condition, il faut "découper" votre formule conditionnelle en additionnant chaque résultat :

MFC=SI(ET(M5>$J5+($L$1/1440);M5+$O$6<>"");1;0)

e qui peut donner si je comprend bien :

=somme.si(M5:JQ5;">"&$J5+($L$1/1440)+somme.si(M5:JQ5;"<>")

enfin le principe est celui-là, avec votre fichier je ne sais si la syntaxe des "critères" est la bonne.

@ bientôt

LouReeD

Bonjour

Si on peut compter en VBA avec DisplayFormat mais le souci est que cette propriété n'est pas lisible quand on l'utilise depuis une fonction personnalisée.

Seulement possible à l'intérieur d'une procédure ou à l'appel d'une procédure : cela complique un peu car il faut déclencher le code pour calculer et remplir les cellules au lieu d'un simple calcul de formules.

Bonsoir à tous !

La solution normale consiste effectivement à remonter à la condition générant la couleur de MFC pour compter les valeurs répondant à ladite condition...

On peut cependant contourner l'écueil par une évènementielle :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim n%, nbR%, c As Range
    If Not Intersect(Target, Me.Range("M5:JQ20")) Is Nothing Then
        n = Target.Row
        For Each c In Me.Range("M" & n).Resize(, 265)
            If c.DisplayFormat.Interior.Color = vbRed Then nbR = nbR + 1
        Next c
        Me.Range("E" & n) = nbR
    End If
End Sub

Je te laisse t'amuser à la déclencher sur les différentes lignes de la plage (l'édition d'une cellule quelconque y suffit) pour voir s'inscrire le résultat en E...

Cordialement.

28zecool-exemple.xlsm (114.03 Ko)

Bonjour,

j'en apprend tous les jours !!!

J'ai fais un amalgame : ce qui n'est pas "possible" sous Excel = impossible sous VBA de surcroit en parlant de fonction personnalisée !

Mais en fait non ! Si c'est impossible ce n'est pas Excel !!!

Alors veuillez excusez mon ignorance, et je suis comptant de savoir qu'en VBA "pur" on peut compter ou du moins tester la couleur affichée suite à une MFC de feuille Excel.

Cela me servira peut être un jour, sur REPLI mon planning de GANTT.

Merci encore à 78chris et MFerrand.

@ bientôt

LouReeD

Bonjour LouReed,

Cette propriété DisplayFormat renvoie les propriétés de mise en forme d'une plage correspondant à un affichage actuel, donc telles que modifiées par une MFC !

Comme beaucoup, je suis longtemps passé à côté du fait que l'on ne peut utiliser cette propriété pour réaliser une fonction... mais l'affaire est plus subtile : c'est tout simplement un verrou de Microsoft qui bloque l'utilisation de la propriété dans une fonction personnalisée utilisée en feuille de calcul ! Pourquoi ? Cela fait partie des mystères...

Mais en fait tu peux fort bien l'introduire dans une Function. La fonction fonctionnera parfaitement en VBA ! Mais si tu l'appelles en feuille de calcul, même indirectement, tu auras un renvoi #VALEUR! On ne peut donc contourner la chose que par une évènementielle qui soit va affecter la valeur directement, soit l'affectera à une variable (une fonction appelant la variable contenant un calcul effectué en utilisant DisplayFormat fonctionnera, elle, dans la feuille car ce n'est pas la fonction qui aura mis à jour la variable...

Cordialement.

Bonjour Maréchal,

vous ne dormez donc jamais !

Merci pour ces éclaircissements, reste à moi de m'en souvenir :

@ bientôt

LouReeD

Bonjour

Déjà un grand merci à Mferrand pour cette réponse même si pour moi cela reste du charabia

La seule chose c est que le nombres ne se mets pas à jour au fur et à mesure mais pas grave je le ferais manuellement

Encore merci à vous

Bonne journée

La seule chose c est que le nombres ne se mets pas à jour au fur et à mesure

Bien sûr que si ! La mise à jour intervient lors d'un changement de valeur d'une cellule ciblée dans la ligne (soit entre M et JQ), cela active la procédure Change qui met à jour la valeur en colonne E.

J'ai indiqué comment la faire s'activer pour faire s'inscrire une première valeur : on édite une cellule, peu importe qu'elle soit vide ou pas, c'est à dire on la sélectionne et on va se placer dans la barre de formule, ou bien on opère un double-clic sur la cellule, ce qui l'édite, et on appuie sur Entrée, ce qui ne modifie rien mais suffit à lancer la proc. Change.

Il n'était pas utile de prévoir une mise à jour globale à n'exécuter qu'une fois pour à peine 15 lignes, cela se fait en quelques secondes. Ni de faire recalculer toute la plage chaque fois pour une modif n'affectant qu'une ligne à la fois !

Il est vrai par contre que le changement de résultat d'une formule n'active pas Change !

Cordialement.


Il conviendrait peut-être alors d'opérer le déclenchement de Change sur la plage source, décalée de 50 lignes (mais il faudrait alors qu'elle soit de taille égale et que les lignes correspondent, ce qui devrait être le cas mais ne l'est pas tout à fait) et on prend la ligne de Target -50 pour opérer le calcul...

Rechercher des sujets similaires à "adiitionner meme couleur"