Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

calcul en fonction du texte et de la couleur de la cellule

16 réponses
Avatar
andrea
Bonjour

j'ai récupéré sur internet 2 fonctions :
===========================================
Function BgColorcountif(SearchArea As Object, BgColor As Integer) As Integer
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgColor)
Next Cell
End Function


Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
==========================================

qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge qui contiennent le mot chat je
multiplie 3 par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul : 3*7 + 2*12


est-ce possible et comment faire

merci d'avance

10 réponses

1 2
Avatar
Daniel.C
Bonjour
Tu en as vraiment l'utilité, ou c'est un défi technologique ?
;-)
Daniel
"andrea" a écrit dans le message de news:

Bonjour

j'ai récupéré sur internet 2 fonctions :
========================================== > Function BgColorcountif(SearchArea As Object, BgColor As Integer) As
Integer
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgColor)
Next Cell
End Function


Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
========================================= >
qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge qui contiennent le mot chat je
multiplie 3 par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul : 3*7 + 2*12


est-ce possible et comment faire

merci d'avance


Avatar
JB
Bonjour,

Fonction matricielle:

=SOMMEPROD((couleurfond(B2:B10)=3)*(B2:B10="chat"))

Function couleurFond(champ As Range)
Application.Volatile
Dim temp()
ReDim temp(1 To champ.Count)
For i = 1 To champ.Count
temp(i) = champ(i).Interior.ColorIndex
Next i
couleurFond = Application.Transpose(temp)
End Function

http://cjoint.com/?cusgSBRbdX

JB
http://boisgontierjacques.free.fr


On 20 fév, 17:01, andrea wrote:
Bonjour

j'ai récupéré sur internet 2 fonctions :
======================== ===================
Function BgColorcountif(SearchArea As Object, BgColor As Integer) As Integ er
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgCol or)
Next Cell
End Function

Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
======================== ==================

qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge  qui contiennent le mot chat  je
multiplie  3  par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul :  3*7  + 2*12

est-ce possible et comment faire

merci d'avance


Avatar
andrea
oui cela me serait très utile et me ferait gagner un temps fou
j'ai simplifié l'exemple pour etre plus claire
je me demande si l'on peut directement dans le code de la fonction
dire toutes les cellules valent 7 sauf celles qui contiennent le mot
chien qui elle vaut 12
puisque je n'ai que 2 possibilité de valeur 7 ou 12
merci d'avance



Bonjour
Tu en as vraiment l'utilité, ou c'est un défi technologique ?
;-)
Daniel
"andrea" a écrit dans le message de news:

Bonjour

j'ai récupéré sur internet 2 fonctions :
========================================== >> Function BgColorcountif(SearchArea As Object, BgColor As Integer) As
Integer
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgColor)
Next Cell
End Function


Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
========================================= >>
qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge qui contiennent le mot chat je
multiplie 3 par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul : 3*7 + 2*12


est-ce possible et comment faire

merci d'avance






Avatar
Daniel.C
Function CoulTexte(Plage As Range, Texte As String, _
Coul As Integer, Mult As Double)
Dim c As Range, Ctr As Integer
For Each c In Plage
If c.Interior.ColorIndex = Coul And c = Texte Then
Ctr = Ctr + 1
End If
Next c
CoulTexte = Ctr * Mult
End Function
"Plage" est la plage de cellules, "Texte" le texte cherché, "Coul" le
colorindex de la cellule, et "Mult" le coefficient de multiplication.
Daniel
"andrea" a écrit dans le message de news:

Bonjour

j'ai récupéré sur internet 2 fonctions :
========================================== > Function BgColorcountif(SearchArea As Object, BgColor As Integer) As
Integer
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgColor)
Next Cell
End Function


Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
========================================= >
qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge qui contiennent le mot chat je
multiplie 3 par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul : 3*7 + 2*12


est-ce possible et comment faire

merci d'avance


Avatar
andrea
Je ne permettrais pas de poser un problème juste pour le plaisir
vous faire cogiter et perdre votre temps

d'ailleurs je remercie tous ceux qui répondent
si vite et si efficacement

grace à vous tous, je progresse et je me rends compte
qu'excel peut tout faire c'est impressionnant

la seule chose qu'excel ne peut pas faire c'est le ménage et le repassage

mais qui sait !!! un jour ...
Avatar
Daniel.C
je me demande si l'on peut directement dans le code de la fonction
dire toutes les cellules valent 7


Même les cellules qui ne sont pas rouges ?

sauf celles qui contiennent le mot
chien qui elle vaut 12


Si elles sont rouges ?

Daniel

Avatar
isabelle
bonjour andrea,


la seule chose qu'excel ne peut pas faire c'est le ménage et le repassage

mais qui sait !!! un jour ...


nous en sommes pas loin andrea, surtout avec l'aide de ChrisV ;-)

isabelle( qui cours au abris )

Avatar
Daniel.C
la seule chose qu'excel ne peut pas faire c'est le ménage et le repassage


J'aurais plutôt dit le café, mais, bon...

Avatar
Daniel.C
Bonjour.
Le jour où l'on aura de l'aide sur DATEDIF (pas encore dans 2007, bien que
la fonction soit intégrée)
;-(((
Daniel
"isabelle" a écrit dans le message de news:
uZBQbT%
bonjour andrea,


la seule chose qu'excel ne peut pas faire c'est le ménage et le repassage

mais qui sait !!! un jour ...


nous en sommes pas loin andrea, surtout avec l'aide de ChrisV ;-)

isabelle( qui cours au abris )



Avatar
andrea
merci cela fonctionne
j'ai mis cette formule
=SOMMEPROD((couleurfond($K$2:$K$32)D)*($I$2:$I$32="chat")*4)+SOMMEPROD((couleurfond($K$2:$K$32)D)*($I$2:$I$32<>"chat")*8,25)

peut on la simplifier ?

merci d'avance


Bonjour,

Fonction matricielle:

=SOMMEPROD((couleurfond(B2:B10)=3)*(B2:B10="chat"))

Function couleurFond(champ As Range)
Application.Volatile
Dim temp()
ReDim temp(1 To champ.Count)
For i = 1 To champ.Count
temp(i) = champ(i).Interior.ColorIndex
Next i
couleurFond = Application.Transpose(temp)
End Function

http://cjoint.com/?cusgSBRbdX

JB
http://boisgontierjacques.free.fr


On 20 fév, 17:01, andrea wrote:
Bonjour

j'ai récupéré sur internet 2 fonctions :
========================================== >> Function BgColorcountif(SearchArea As Object, BgColor As Integer) As Integer
For Each Cell In SearchArea
BgColorcountif = BgColorcountif + Abs(Cell.Interior.ColorIndex = BgColor)
Next Cell
End Function

Function BgColor(CkCell As Object)
BgColor = Abs(CkCell.Interior.ColorIndex)
End Function
========================================= >>
qui me permettent avec la formule suivante :
=BgColorcountif(E2:E32;Bgcolor(A39))*7

de calculer en fonction de la couleur de la cellule
cela fonctionne très bien et s'est super

mais en plus j'aimerais par exemple calculer aussi en fonction du texte
contenu dans la cellule

par exemple j'ai 3 cellules rouge qui contiennent le mot chat je
multiplie 3 par 7
mais si dans le lot j'ai 2 cellules rouges qui contiennent le mot chien
j'aimerais multiplier par 12

ce qui donnerais comme calcul : 3*7 + 2*12

est-ce possible et comment faire

merci d'avance





1 2