Fonctions excel

papoujp -  
laxatif2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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

2 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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
  2. laxatif2 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    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