A voir également:
- Fonctions excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Fonction si et excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
2 réponses
Salut le forum
Une fonction personnalisée (Il en existe plusieurs variantes)
Code à mettre dans un module VBA
La formule : =SommeSiCouleur(A1:A10, 3)
Ou encore sans connaitre la valeur de la palette des couleurs
La formule : =SumByColor(A1:A10, B1)
Mytå
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
Une fonction personnalisée (Il en existe plusieurs variantes)
Code à mettre dans un module VBA
Function SommeSiCouleur(Plage As Range, NumeroDeCouleur%) As Long Application.Volatile True Dim wCell As Range For Each wCell In Plage If wCell.Interior.ColorIndex = NumeroDeCouleur Then SommeSiCouleur = SommeSiCouleur + wCell.Value End If Next End Function
La formule : =SommeSiCouleur(A1:A10, 3)
Ou encore sans connaitre la valeur de la palette des couleurs
Function SumByColor(PlageEntree As Range, CouleurPlage As Range) As Double
Dim Cell As Range, TempSum As Double, ColorIndex As Integer
Application.Volatile
ColorIndex = CouleurPlage.Cells(1, 1).Interior.ColorIndex
TempSum = 0
On Error Resume Next
For Each Cell In PlageEntree.Cells
If Cell.Formula < > "" Then
If Cell.Interior.ColorIndex = ColorIndex Then TempSum = TempSum + _
Cell.Value
End If
Next Cell
On Error GoTo 0
Set Cell = Nothing
SumByColor = TempSum
End Function
La formule : =SumByColor(A1:A10, B1)
Mytå
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
Bonjour,
Tu dois pouvoir créer cette fonction en passant par VBA. Pour cela il suffit de créer une boucle qui parcoure chaque cellule de la zone en question et qui ajoute la valeur de chaque case si la condition "couleur de la case est respectée"
Du genre :
Sub test()
Dim myselect, mycells As Range
Dim total As Double
Set myselect = Range("B5:B14") 'pour un ex, on peut prendre une sélection variable
For Each mycells In myselect
If mycells.Interior.ColorIndex = 6 Then ' le 6, c'est du jaune
total = total + mycells.Value
End If
Next
MsgBox "le total est :" & total ' on peut ressortir la valeur n'importe ou
End Sub
Après ca dépend si tu veux le faire via une fonction (que tu crées mais dans ce cas il faut spécifier les arguments) ou si tu veux le faire via un bouton (avec une zone a spécifier). L'exemple que je t'ai mis marche avec une commande, comme un bouton.
J'espère que ca fera l'affaire
Tu dois pouvoir créer cette fonction en passant par VBA. Pour cela il suffit de créer une boucle qui parcoure chaque cellule de la zone en question et qui ajoute la valeur de chaque case si la condition "couleur de la case est respectée"
Du genre :
Sub test()
Dim myselect, mycells As Range
Dim total As Double
Set myselect = Range("B5:B14") 'pour un ex, on peut prendre une sélection variable
For Each mycells In myselect
If mycells.Interior.ColorIndex = 6 Then ' le 6, c'est du jaune
total = total + mycells.Value
End If
Next
MsgBox "le total est :" & total ' on peut ressortir la valeur n'importe ou
End Sub
Après ca dépend si tu veux le faire via une fonction (que tu crées mais dans ce cas il faut spécifier les arguments) ou si tu veux le faire via un bouton (avec une zone a spécifier). L'exemple que je t'ai mis marche avec une commande, comme un bouton.
J'espère que ca fera l'affaire