XL 2010 Nb Couleur Cellule avec double condition

fabguilb

XLDnaute Nouveau
Bonjour à Tous,
J'ai trouvé sur internet une fonction me permettant de calculer le Nb de couleurs en fonction de la couleur. Je souhaite intégrer une nouvelle condition pour trouver le nb de couleur en fonction de la couleur mais également du salarié. J'ai essayé avec une formule Somme.si mais cela ne fonctionne pas (résulat Valeur). Pourriez-vous m'aider. Je joins mon fichier
Merci de votre aide
 

Pièces jointes

  • calcul nb couleur.xlsm
    15 KB · Affichages: 19

eriiic

XLDnaute Barbatruc
Bonjour,

J'ai mis couleur et nom du salarié dans la même cellule, et séparé plage salariés et plage couleurs pour être plus général si l'espacement change.
Syntaxe : =nbcouleurs(plSalarié, plCouleur, modèle)

Tu peux mettre aussi la couleur sur le nom, avec une petite modification de la fonction et c'est bon
eric
 

Pièces jointes

  • calcul nb couleur.xlsm
    17.1 KB · Affichages: 9

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

En modifiant la fonction, on utilise un simple SommeProd():
Code:
=SOMMEPROD( (couleur(B6:B14)=couleur(B2) ) * ( A6:A14=B1 ) )

La fonction couleur renvoie une matrice de couleur. Chaque élément de la matrice est la couleur de la cellule correspondante de la plage d'entrée. Si la plage d'entrée est une seule cellule, alors couleur renvoie une valeur unique et non pas une matrice.

Le code de la fonction Couleur :
VB:
Function Couleur(plage As Range)
Dim i&
   Application.Volatile
   If plage.Areas.Count > 1 Then Couleur = CVErr(xlErrRef): Exit Function
   If plage.Count = 1 Then Couleur = plage.Interior.Color: Exit Function
   ReDim t(1 To plage.Count, 1 To 1)
   For i = 1 To plage.Count: t(i, 1) = plage(i).Interior.Color: Next i
   Couleur = t
End Function
 

Pièces jointes

  • fabguilb- calcul nb couleur- v1.xlsm
    18.1 KB · Affichages: 8
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,
Une version plus adaptative. Si la plage source est verticale, Couleur renvoie une matrice verticale, et si la plage source est horizontale, Couleur renvoie une matrice horizontale.
VB:
Function Couleur(plage As Range)
Dim i&
   Application.Volatile
   If plage.Areas.Count > 1 Then Couleur = CVErr(xlErrRef): Exit Function
   If plage.Count = 1 Then Couleur = plage.Interior.Color: Exit Function
   If plage.Rows.Count = 1 Then
      ReDim t(1 To 1, 1 To plage.Count)
      For i = 1 To plage.Count: t(1, i) = plage(i).Interior.Color: Next i
   Else
      ReDim t(1 To plage.Count, 1 To 1)
      For i = 1 To plage.Count: t(i, 1) = plage(i).Interior.Color: Next i
   End If
   Couleur = t
End Function
 

Pièces jointes

  • fabguilb- calcul nb couleur- v2.xlsm
    18.5 KB · Affichages: 8

fabguilb

XLDnaute Nouveau
Bonjour à tous,

En modifiant la fonction, on utilise un simple SommeProd():
Code:
=SOMMEPROD( (couleur(B6:B14)=couleur(B2) ) * ( A6:A14=B1 ) )

La fonction couleur renvoie une matrice de couleur. Chaque élément de la matrice est la couleur de la cellule correspondante de la plage d'entrée. Si la plage d'entrée est une seule cellule, alors couleur renvoie une valeur unique et non pas une matrice.

Le code de la fonction Couleur :
VB:
Function Couleur(plage As Range)
Dim i&
   Application.Volatile
   If plage.Areas.Count > 1 Then Couleur = CVErr(xlErrRef): Exit Function
   If plage.Count = 1 Then Couleur = plage.Interior.Color: Exit Function
   ReDim t(1 To plage.Count, 1 To 1)
   For i = 1 To plage.Count: t(i, 1) = plage(i).Interior.Color: Next i
   Couleur = t
End Function
Merci de votre réponse
 

Discussions similaires