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