Bonjour à tous,
Oui j'ai rayé quelques lignes.
Je pense toujours que ça peut être intéressant de strapper la fonction pour éviter une consommation de ressources si on travaille en même temps sur d'autres classeurs indépendants (surtout pour une fonction qui balaie toute une plage à chaque calculate, ça peut induire des lenteurs inutiles).
Mais comme ça implique d'ajouter des lignes dans workbook_activate() je me suis dit qu'il était inutile de compliquer le topic en ajoutant d'autres impératifs.
Quitte à y revenir plus tard si le demandeur (j'espère qu'il n'est pas mort ?) est intéressé.
J'en suis là :
Function SommeCouleurFondTexte2(champ As Range)
Dim c As Range
Application.Volatile
'**** si on veut éviter la boucle quand on est sur un autre classeur ****
'If Not ActiveWorkbook Is ThisWorkbook Then Exit Function
couleurFond = Application.ThisCell.Interior.ColorIndex
couleurTexte = Application.ThisCell.Font.ColorIndex
For Each c In champ
If c.Interior.ColorIndex = couleurFond And c.Font.ColorIndex = couleurTexte Then
If IsNumeric(c.Value) Then SommeCouleurFondTexte2 = SommeCouleurFondTexte2 + c.Value
End If
Next c
End Function
'
' dans ThisWorkbook si boucle strappée :
Private Sub Workbook_Activate()
Sheets("Feuil1").Range("D3").Dirty ' plage de la fonction à ré-évaluer
End Sub
eric