Fonctions excel

Fermé
papoujp - 12 juil. 2010 à 10:01
laxatif2 Messages postés 8 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 20 juillet 2010 - 13 juil. 2010 à 06:04
Bonjour,

sous excel comment faire la somme de cellules de méme couleurs sans tenir compte du texte ??
merci
A voir également:

2 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 950
Modifié par Mytå le 13/07/2010 à 12:25
Salut le forum

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)]
1
laxatif2 Messages postés 8 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 20 juillet 2010
13 juil. 2010 à 06:04
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
0