Formule qui compte n'importe comment

Le
Menibelus
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #18235361
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


Menibelus
Le #18235791
On 28 déc, 14:43, 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 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
Publicité
Poster une réponse
Anonyme