[RESOLU]Fonction sommesicouleur et couleur matricielle

Scoty

XLDnaute Occasionnel
Bonjour le forum,

Soit un calcul du nombre d'heure de Mr A par mois et par site (en fonction de la couleur de la cellule). Dans le premier fichier, cela fonctionne correctement.

J'ai voulu calculé le cout de Mr A en fonction de divers critères:
HTML:
http://www.excel-downloads.com/forum/221552-resolu-simplifier-calcul-cout-personnel-avec-fonction-matcoul-sans-ligne-de-ref.html
Une solution m'a été fourni en "matricialisant" la fonction couleur.

Mon pépin actuelle: la fonction sommesicouleur et couleur (matricielle) ne fonctionne pas si on prend comme référence la couleur d'une cellule (voir fichier 2). Et je souhaite garder cette référence de couleur cellule car je me suis rendu compte qu'en ouvrant le fichier sur excel 2007, le code couleur variait (en fixant le n° de couleur) et mes calculs étaient devenu faux!

Je pense que c'est lors de la déclaration de variable mais je sèche!

Un grand merci pour votre aide.

Dans l'attente de vs lire
@+Scoty
 

Pièces jointes

  • 1.sommesicouleur et couleur ok.xlsm
    19.4 KB · Affichages: 55
  • 2.sommesicouleur et couleur problème.xlsm
    21 KB · Affichages: 43
Dernière édition:
G

Guest

Guest
Re : Fonction sommesicouleur et couleur matricielle

Bonjour,

D'après ce que j'ai compris, en écrivant la fonction comme ci-dessous et en lui passant une cellule de référence pour comparaison:
Code:
Function SommeSiCouleur(Plage As Range, CelCouleurRef As Range) As Long
    Application.Volatile True
    Dim wCell As Range
    Dim couleur: couleur = CelCouleurRef(1, 1).Interior.ColorIndex
    For Each wCell In Plage
        If wCell.Interior.ColorIndex = couleur Then
            SommeSiCouleur = SommeSiCouleur + wCell.Value
        End If
    Next
End Function

A appeler comme ceci:=SommeSiCouleur(B6:M6;$O$5)

A+
 

job75

XLDnaute Barbatruc
Re : Fonction sommesicouleur et couleur matricielle

Bonjour Scoty, Hasco,

Ou en entrant en O6 =SommeSiCouleur(B6:M6;INDEX(couleur(O5);1))

Edit : avec une seule cellule O5 on peut aussi utiliser =SommeSiCouleur(B6:M6;MIN(couleur(O5)))

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 889
Membres
103 019
dernier inscrit
Eliot_1