Fonction de comptage avec resultat #VALEUR!

Bonjour, je galère TROP !! malgré de nombreuses tentatives, je n’y arrive pas. merci pour votre aide
J’ai un fichier listant des valeurs comptables dont certaines sont couloréés suite à des règles de MFC. Je cherche à totaliser les résultats d’une même couleurs.
La fonction me retourne le code #VALEUR! alors qu’un clic gauche sur Fx me montre le résultat correcte

A la base la fonction fonctionne très bien sur un fichier dont les cases sont colorées manuellement.

Function sommecouleurs(plageC As Range, cellule As Range, Optional plageS As Variant) As Long
Application.Volatile
Dim chaqueCelluleC As Range
Dim chaqueCelluleS As Range
sommecouleurs = 0
If (IsMissing(plageS)) Then
For Each chaqueCelluleC In plageC
If (chaqueCelluleC.Interior.ColorIndex = cellule.Interior.ColorIndex) Then
sommecouleurs = sommecouleurs + chaqueCelluleC.Value
End If
Next chaqueCelluleC
Else
'For Each chaqueCelluleC In plageC
If (chaqueCelluleC.Interior.ColorIndex = cellule.Interior.ColorIndex) Then
For Each chaqueCelluleS In plageS
If (chaqueCellule.Row = chaqueCelluleC.Row) Then
sommecouleurs = sommecouleurs + chaqueCelluleS.Value
End If
Next chaqueCelluleS
End If
Next chaqueCelluleC

End If

End Function

Mais utilisant des MFC , j’ai modifié la fonction en rajoutant « DisplayFormat »

Function sommecouleurs(plageC As Range, cellule As Range, Optional plageS As Variant) As Long
Application.Volatile
Dim chaqueCelluleC As Range
Dim chaqueCelluleS As Range
sommecouleurs = 0
If (IsMissing(plageS)) Then
For Each chaqueCelluleC In plageC
If (chaqueCelluleC.DisplayFormat.Interior.ColorIndex = cellule.DisplayFormat.Interior.ColorIndex) Then
sommecouleurs = sommecouleurs + chaqueCelluleC.Value
End If
Next chaqueCelluleC
Else
'For Each chaqueCelluleC In plageC
If (chaqueCelluleC.DisplayFormat.Interior.ColorIndex = cellule.DisplayFormat.Interior.ColorIndex) Then
For Each chaqueCelluleS In plageS
If (chaqueCellule.Row = chaqueCelluleC.Row) Then
sommecouleurs = sommecouleurs + chaqueCelluleS.Value
End If
Next chaqueCelluleS
End If
Next chaqueCelluleC

End If

End Function

Bonjour
Des explications récupérées sur un site Microsoft concernant l’instruction " DisplayFormat " :

Notez que la propriété DisplayFormat ne fonctionne pas dans les fonctions définies par l’utilisateur (UDF). Par exemple, sur une fonction de feuille de calcul qui retourne la couleur intérieure d’une cellule, vous utilisez une ligne similaire à : Range(n).DisplayFormat.Interior.ColorIndex . Lorsque la fonction de feuille de calcul s’exécute, elle retourne une erreur #VALUE! .

Pas d’autre choix que d’utiliser les formules des MFC et non les couleurs qu’elles engendrent exemple :

Cellule « A1 » =10 cellule « A2 » rouge

Il faut utiliser dans ta fonction cellule « A1 »=10 et non cellule « A2 » rouge

Pas d’autre choix

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.