OVH Cloud OVH Cloud

Somme.si.ens avec 1 critère couleur et 1 critère texte

1 réponse
Avatar
Merlin84
Bonjour à tous
je viens solliciter votre aide car je suis à la recherche d'une fonction je pense par VBA qui me permettrait de faire un somme.si.ens avec 1 critère couleur et un 2ème texte.
Si je reviens dans le concret j'ai plusieurs agences qui doivent réaliser un certain objectif de facturation mais les estimations que me remettent les commerciaux sont conditionnées (Problème de BL ou de commandes)

J'avais trouvé une fonction VBA permettant de faire simplement un somme.si couleur
Cordialement

1 réponse

Avatar
MichD
Le 19/02/20 à 07:32, Merlin84 a écrit :
Bonjour à tous
je viens solliciter votre aide car je suis à la recherche d'une fonction je
pense par VBA qui me permettrait de faire un somme.si.ens avec 1 critère couleur
et un 2ème texte.
Si je reviens dans le concret j'ai plusieurs agences qui doivent réaliser un
certain objectif de facturation mais les estimations que me remettent les
commerciaux sont conditionnées (Problème de BL ou de commandes)
J'avais trouvé une fonction VBA permettant de faire simplement un somme.si
couleur
Cordialement

Bonjour,
L'équivalent de la fonction "somme.si.ens" en vba est :
Application.WorksheetFunction.SumIfs. Je ne pense pas que tu vas obtenir
un résultat probant de cette manière.
Voici une manière de procéder. La procédure "Test" appelle la fonction
mise dans un module standard "Add_Color" et additionne les valeurs de la
plage de cellules "Feuil1!B1:B10" si elles sont plus grandes que 5 et
que la couleur est "14395790". 14395790 est obtenu en extrayant la
propriété "Color" de "Interior" de la cellule. À titre d'exemple :
X = Range("A1").Interior.Color
Ce type de fonction personnalisée peut s'écrire de différentes façons
selon la donne du problème!
'---------------------------
Sub test()
MsgBox Add_Color(Range("Feuil1!B1:B10"), 5, 14395790)
End Sub
'---------------------------
Function Add_Color(Rg As Range, Critère As Long, Couleur As Long)
Dim C As Range
For Each C In Rg
If C > Critère And C.Interior.Color = Couleur Then
Add_Color = Add_Color + C.Value
End If
Next
End Function
'---------------------------
MichD