J'ai écrit une fonction - classique - du genre
SommeSiCouleur(Plage,Couleur).
Function SommeSiCouleur(PlageEntree As Range, Couleur As Byte) As Double
Dim Cell As Range, TempSum As Double
TempSum = 0
On Error Resume Next
For Each Cell In PlageEntree.Cells
If Cell.Font.ColorIndex = Couleur Then TempSum = TempSum +
Cell.Value
Next Cell
On Error GoTo 0
Set Cell = Nothing
SommeSiCouleur = TempSum
End Function
ça fonctionne à ceci près que le re-calcul ne s'effectue pas à chaque
modification ; par exemple si la fonction appelée dans la feuille est
SommeSiCouleur("A1:B10",5) - 5=>bleu - et que je change la couleur de
certaines cellule de la plage, la somme n'est pas modifiée...
J'ai essayé en créant une macro complémentaire => même chose. J'ai ajouté
Calculate => même pb.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour,
Il faut: - ajouter Application.Volatile et
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function
Cordialement JB
Bonjour,
Il faut:
- ajouter Application.Volatile
et
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate ' ou Range("resultat").Calculate
End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Font.ColorIndex = couleurTexte Then
temp = temp + c.Value
End If
Next c
SommeCouleurTexte = temp
End Function
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function
Cordialement JB
Jero
Merci, c'est OK ! "JB" a écrit dans le message de news:
Bonjour,
Il faut: - ajouter Application.Volatile et
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function
Cordialement JB
Merci, c'est OK !
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1139901284.037487.95990@f14g2000cwb.googlegroups.com...
Bonjour,
Il faut:
- ajouter Application.Volatile
et
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate ' ou Range("resultat").Calculate
End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Font.ColorIndex = couleurTexte Then
temp = temp + c.Value
End If
Next c
SommeCouleurTexte = temp
End Function
Merci, c'est OK ! "JB" a écrit dans le message de news:
Bonjour,
Il faut: - ajouter Application.Volatile et
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function
Cordialement JB
Jero
...et merci pour le classeur... Jero "JB" a écrit dans le message de news:
Bonjour,
Il faut: - ajouter Application.Volatile et
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function
Cordialement JB
...et merci pour le classeur...
Jero
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1139901284.037487.95990@f14g2000cwb.googlegroups.com...
Bonjour,
Il faut:
- ajouter Application.Volatile
et
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate ' ou Range("resultat").Calculate
End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Font.ColorIndex = couleurTexte Then
temp = temp + c.Value
End If
Next c
SommeCouleurTexte = temp
End Function
...et merci pour le classeur... Jero "JB" a écrit dans le message de news:
Bonjour,
Il faut: - ajouter Application.Volatile et
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Calculate ' ou Range("resultat").Calculate End Sub
http://cjoint.com/?coikeLSVWo
Function SommeCouleurTexte(champ As Range, couleurTexte) Application.Volatile Dim c, temp temp = 0 For Each c In champ If c.Font.ColorIndex = couleurTexte Then temp = temp + c.Value End If Next c SommeCouleurTexte = temp End Function