Microsoft 365 Calcul en fonction de la couleur des caractères

Newg75

XLDnaute Nouveau
Bonjour,

Pourriez-vous m'aider à résoudre cela ; je voudrais additionner les sommes de la colonne C quand c'est écrit en rouge dans la colonne E ?

Avec mes sincères remerciements pour votre aide

A B C D E
avr-22​
23/04/2022​
23,48 €​
HYPER UCB
avr-22​
23/04/2022​
1,80 €​
BoulangerieCB
 

Softmama

XLDnaute Accro
Bonjour Newg75, Dudu2,

un truc dans le genre :

VB:
sub VoiliVoilou()
  Dim c as Range, a as double
  Set c= Range("E1") ' Ou E2 ou E3 ... en fonction d'où commence ton tableau
  Do while c<> ""
    If c.interior.colorindex = 3 then 'Si c'est écrit en rouge
      a = a + range(c.row, 3)
    end if
    set c=c.offset(1) ' boucle cellule d'en dessous
  Loop
  msgbox "Somme en rouge : " & a ' Affichage résultat
end sub

à adapter selon tes besoins,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Newg, et bienvenu sur XLD, Bonsoir Dudu, Softmama,
Un autre essai en PJ avec cette fonction perso :
Code:
Function CompteRouge(Plage1, Plage2)
    Application.Volatile
    For Each c In Plage1
        If c.Font.Color = vbRed Then CompteRouge = CompteRouge + Cells(c.Row, Plage2.Column)
    Next c
End Function
A noter qu'un changement de couleur ne ré évalue pas les formules dans XL, il faut valider au moins une cellule ( par entrée ) pour faire le recalcul, ou faire F9 ou Calculer maintenant.
 

Pièces jointes

  • CompteValeurRouges.xlsm
    14.8 KB · Affichages: 8

Katido

XLDnaute Occasionnel
Bonjour,
Il faut faire du VBA, mais si on veut en faire le moins possible, on peut juste créer une fonction qui ramène une valeur en fonction de la couleur du texte :
Public Function NumCoulTxt(r As Range) As Long
NumCoulTxt = r.Font.Color
End Function
Après on utilise cette fonction comme une autre dans des formules, par exemple :
15,6XXX=SI(NumCoulTxt(E2)=255;C2;0)
4XXX=SI(NumCoulTxt(E3)=255;C3;0)
78XXX=SI(NumCoulTxt(E4)=255;C4;0)
13XXX=SI(NumCoulTxt(E5)=255;C5;0)
=SOMME(F2:F5)
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour,
Franchement, ça n'a pas d'intérêt de jouer sur la couleur pour conditionner la somme.
Comme le dit justement @sylvanu, le changement de couleur ne provoque pas de re-calcul et ce système est donc voué à l'échec.
Il serait bien plus efficace d'ajouter une colonne et d'y placer un indicateur (Oui/Non ou autre) sur liste de validation et s'il faut avoir du rouge sur les chiffres, utiliser une MFC basée sur la valeur de cet indicateur.
 

Dudu2

XLDnaute Barbatruc
En modifiant l'indicateur, la couleur et la somme s'adaptent sans problème.

1650886319721.png
 

riton00

XLDnaute Impliqué
A noter qu'un changement de couleur ne ré évalue pas les formules dans XL, il faut valider au moins une cellule ( par entrée ) pour faire le recalcul, ou faire F9 ou Calculer maintenant.
Bonjour,

Possibilité de recalcule avec

VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Application.Calculate
End Sub

Slts
 

Pièces jointes

  • CompteValeurRouges (2).xlsm
    15.8 KB · Affichages: 1

Katido

XLDnaute Occasionnel
Le fait que le changement de couleur (de format de cellule en général) ne provoque pas de recalcul peut en effet être gênant.
Par exemple, dans le cas de ma petite fonction NumCoulTxt(), le calcul se fait quand on écrit la formule ou qu'on modifie les données de la cellule colorée. Mais par la suite, un F9 ou Application.Calculate ne suffit pas, il faut un Application.CalculateFull ou un Application.CalculateFullRebuild
C'est vrai que si on peut faire autrement qu'avec les couleurs, c'est plus sûr
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Un pis aller, en partant de la PJ #4, est de rajouter simplement :
VB:
Sub Worksheet_SelectionChange(ByVal Target As Range)
    Calculate
End Sub
Mais il faut quand même après avoir changé une couleur sélectionner une cellule quelle qu'elle soit.
Il n'y a pas de moyen de détecter en temps réel un changement de couleur d'une police.
 

Pièces jointes

  • CompteValeurRouges.xlsm
    15.5 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD