XL 2010 Nb Couleur Cellule avec double condition

  • Initiateur de la discussion Initiateur de la discussion fabguilb
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

Dernière édition:
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
375
Réponses
6
Affichages
642
Réponses
4
Affichages
132
Réponses
1
Affichages
116
Réponses
1
Affichages
362
Retour