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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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?
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
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
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?
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
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
On 28 déc, 14:43, Daniel.C <dcolardelle...@gmail.com> 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
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