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

Formule qui compte n'importe comment

2 réponses
Avatar
Menibelus
Bonjour,

Dans un tableau, j'aimerai comptabiliser les cellules en fonction de
deux crit=E8res, le contenu par exemple G5 et la couleur de fond.
Pour la couleur j'ai trouv=E9 le code vba ci-dessous

et j'ai donc =E9cris ceci =3DSOMMEPROD(($D5:$GC5=3DTyGa)*(SomCool
($D5:$GC5;"jaune"))) et ceci =3DSOMMEPROD(($D5:$GC5=3DTyAs)*(SomCool
($D5:$GC5;"jaune")))
TyGa et TyAs sont des noms de cellule.

Mon probl=E8me est que quand je m'est un fond jaune au cellule contenant
A12, la formule me comptabilise =E9galement les cellule de type G5
je ne vois pas pourquoi?

le classeur ici http://cjoint.com/?mCnHIlIate

Function NbParCouleur(Plage, Couleur)
Dim cell As Range
For Each cell In Plage
If cell.Interior.ColorIndex =3D Couleur Then
NbParCouleur =3D NbParCouleur + 1
End If
Next
End Function

Function SomCool(Zne As Range, Couleur As String)
Application.Volatile True
Select Case Couleur
Case "jaune"
Couleur =3D 19
End Select
For Each cell In Zne
If cell.Interior.ColorIndex =3D Couleur Then cvSomme =3D _
cvSomme + 1
'NB : si tu veux d=E9nombrer seulement les cellules d'une couleur
donn=E9e, remplace
' cvSomme=3D cvSomme+ cell.value par cvSomme=3DcvSomme+1

Next
SomCool =3D cvSomme
End Function

2 réponses

Avatar
Daniel.C
Bonjour.
La fonction SomCool ne te renvoie pas une matrice, mais un total (dans
ton cas : 2)
Utilise plutôt :
=SOMMEPROD(($D5:$GC5=TyAs)*(Cool($D5:$GC5;"jaune")))
avec la fonction :

Function Cool(Zne As Range, Couleur As String)
Application.Volatile True
Dim var
ReDim var(0)
Select Case Couleur
Case "jaune"
Couleur = 19
End Select
For Each cell In Zne
ReDim Preserve var(i)
If cell.Interior.ColorIndex = Couleur Then
var(i) = 1
Else
var(i) = 0
End If
i = i + 1

'NB : si tu veux dénombrer seulement les cellules d'une couleur donnée,
remplace
' cvSomme= cvSomme+ cell.value par cvSomme=cvSomme+1

Next
Cool = var
End Function

Cordialement.
Daniel

Bonjour,

Dans un tableau, j'aimerai comptabiliser les cellules en fonction de
deux critères, le contenu par exemple G5 et la couleur de fond.
Pour la couleur j'ai trouvé le code vba ci-dessous

et j'ai donc écris ceci =SOMMEPROD(($D5:$GC5=TyGa)*(SomCool
($D5:$GC5;"jaune"))) et ceci =SOMMEPROD(($D5:$GC5=TyAs)*(SomCool
($D5:$GC5;"jaune")))
TyGa et TyAs sont des noms de cellule.

Mon problème est que quand je m'est un fond jaune au cellule contenant
A12, la formule me comptabilise également les cellule de type G5
je ne vois pas pourquoi?

le classeur ici http://cjoint.com/?mCnHIlIate

Function NbParCouleur(Plage, Couleur)
Dim cell As Range
For Each cell In Plage
If cell.Interior.ColorIndex = Couleur Then
NbParCouleur = NbParCouleur + 1
End If
Next
End Function

Function SomCool(Zne As Range, Couleur As String)
Application.Volatile True
Select Case Couleur
Case "jaune"
Couleur = 19
End Select
For Each cell In Zne
If cell.Interior.ColorIndex = Couleur Then cvSomme = _
cvSomme + 1
'NB : si tu veux dénombrer seulement les cellules d'une couleur
donnée, remplace
' cvSomme= cvSomme+ cell.value par cvSomme=cvSomme+1

Next
SomCool = cvSomme
End Function


Avatar
Menibelus
On 28 déc, 14:43, Daniel.C wrote:
Bonjour.
La fonction SomCool ne te renvoie pas une matrice, mais un total (dans
ton cas  : 2)
Utilise plutôt :
=SOMMEPROD(($D5:$GC5=TyAs)*(Cool($D5:$GC5;"jaune")))
avec la fonction :

Function Cool(Zne As Range, Couleur As String)
Application.Volatile True
Dim var
ReDim var(0)
Select Case Couleur
Case "jaune"
Couleur = 19
End Select
For Each cell In Zne
ReDim Preserve var(i)
If cell.Interior.ColorIndex = Couleur Then
    var(i) = 1
Else
    var(i) = 0
End If
i = i + 1

'NB : si tu veux dénombrer seulement les cellules d'une couleur donné e,
remplace
' cvSomme= cvSomme+ cell.value par cvSomme=cvSomme+1

Next
Cool = var
End Function

Cordialement.
Daniel

> Bonjour,

> Dans un tableau, j'aimerai comptabiliser les cellules en fonction de
> deux critères, le contenu par exemple G5 et la couleur de fond.
> Pour la couleur j'ai trouvé le code vba ci-dessous

> et j'ai donc écris ceci =SOMMEPROD(($D5:$GC5=TyGa)*(SomCool
> ($D5:$GC5;"jaune"))) et ceci =SOMMEPROD(($D5:$GC5=TyAs)*(SomCool
> ($D5:$GC5;"jaune")))
> TyGa et TyAs sont des noms de cellule.

> Mon problème est que quand je m'est un fond jaune au cellule contenan t
> A12, la formule me comptabilise également les cellule de type G5
> je ne vois pas pourquoi?

> le classeur icihttp://cjoint.com/?mCnHIlIate

> Function NbParCouleur(Plage, Couleur)
> Dim cell As Range
>   For Each cell In Plage
>     If cell.Interior.ColorIndex = Couleur Then
>       NbParCouleur = NbParCouleur + 1
>     End If
>   Next
> End Function

> Function SomCool(Zne As Range, Couleur As String)
> Application.Volatile True
> Select Case Couleur
> Case "jaune"
> Couleur = 19
> End Select
> For Each cell In Zne
> If cell.Interior.ColorIndex = Couleur Then cvSomme = _
> cvSomme + 1
> 'NB : si tu veux dénombrer seulement les cellules d'une couleur
> donnée, remplace
> ' cvSomme= cvSomme+ cell.value par cvSomme=cvSomme+1

> Next
> SomCool = cvSomme
> End Function



Merci beaucoup