XL 2016 fonction nb.si ligne en jaune

Batiscaf

XLDnaute Occasionnel
Bonjour à tous,
Désolé d'ouvrir encore un post sur le sujet mais dans l'historique des posts je n'ai pas trouvé comment résoudre mon pb actuel.
En pj un fichier avec différentes lignes de couleurs :
1) J'ai bien créé la fonction couleur en vba car visiblement on ne peut pas identifier une couleur simplement.
2) j'arrive à faire le nb.si sur la colonne qui remonte le code couleur mais je n'arrive pas à faire le nb.si sur la couleur directement.
Si vous pouvez m'aider à trouver le résultat 5 en cellule D24 c'est super.
Merci de votre aide.
Bat.
ps. il fait beau et bon, ça fait plaisir.
 

Pièces jointes

  • compteur lignes couleurs.xls
    32 KB · Affichages: 8

piga25

XLDnaute Barbatruc
Bonjour,

un exemple (feuille 2) avec trois fonctions personnalisées.
VB:
Public Function sommeCouleur(couleur As Range, plage As Range)
For Each c In plage
    If c.Interior.Color = couleur.Interior.Color Then somme = somme + c.Value
Next c
sommeCouleur = somme
End Function

Public Function NombreCouleur(couleur As Range, plage As Range)
For Each c In plage
    If c.Interior.Color = couleur.Interior.Color Then nbr = nbr + 1
Next c
NombreCouleur = nbr
End Function

Function ColorFontCountIf(SearchArea As Object, BgColor As Range) As Integer
Application.Volatile True
ColorFontCountIf = 0
MaCoul = BgColor.Interior.ColorIndex
For Each cell In SearchArea
If cell.Font.ColorIndex = MaCoul Then ColorFontCountIf = ColorFontCountIf + 1
Next cell
End Function

Edit: Salut Job75
 

Pièces jointes

  • compteur lignes couleurs.xls
    78 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Re, salut piga25,

Maintenant si l'on veut se passer de la colonne E la fonction Couleur doit renvoyer une matrice :
Code:
Function Couleur(plage As Range)
'plage doit être formée de cellules adjacentes
Dim ncol%, i&, j%
Application.Volatile
ncol = plage.Columns.Count
ReDim a(1 To plage.Rows.Count, 1 To ncol)
For i = 1 To plage.Rows.Count
    For j = 1 To ncol
        a(i, j) = plage(i, j).Interior.ColorIndex
Next j, i
Couleur = a 'matrice
End Function
Formule en D24 du fichier joint :
Code:
=SOMMEPROD(N(Couleur(D9:D21)=6))
A+
 

Pièces jointes

  • compteur lignes couleurs(1).xls
    68 KB · Affichages: 6

Batiscaf

XLDnaute Occasionnel
Merci à tous les 2 pour vos réponses.

J'ai 2 précisions à vous demander concernant la solution de piga25 que j'ai remis en pj avec des sous totaux par couleurs :
1) Pourquoi quand je change une couleur de fond ou de police il faut que je fasse F9 pour que les totaux s'actualisent ? les fonctions personnalisées ne s'actualisent pas automatiquement ?
2) Est-ce que créer des Public Function ne permettra de les mettre dans mon fichier de macros personnelles pour les utiliser sur n'importe quel nouveau fichier à venir ? (sans que ça plante si qqun d'autre ouvre mes fichiers sur son poste)

Bat.
 

Pièces jointes

  • compteur lignes couleurs.xls
    44 KB · Affichages: 5

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia