Somme si couleur

Résolu
Bonjour,

Je souhaiterais, sous exel, faire la somme des chiffres écris en vert, cela est-il possible.

PS: je ne connais rien au langage VBA.

Merci d'avance.

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonsoir,

    Ca ne peut être en fait qu'en vba.
    Une proposition de fonction personnalisée à mettre dans un module.
    Function sommeCouleurPolice(plage As Range, modèleCouleur As Range) As Double
        Dim couleur As Long, c As Range
        Application.Volatile
        couleur = modèleCouleur.Font.ColorIndex
        For Each c In plage
            If c.Font.ColorIndex = couleur And IsNumeric(c) Then sommeCouleurPolice = sommeCouleurPolice + c.Value
        Next c
    End Function
    

    Une fois mise dans le classeur ça s'utilise comme une fonction excel :
    =sommeCouleurPolice(A1:B12;E1)
    fait la somme des nombres de la plage A1:B12 dont la couleur de la police est la même que celle en E1.
    Si tu changes la couleur d'un nombre ça ne génère pas d'évènement détectable.
    F9 (recalcul) ou une saisie dans la feuille rafraichit le résultat.

    Alt+F11 pour ouvrir vbe.
    Clic-droit sur le projet (à gauche) et 'insertion / module', coller le code dans le module.
    ex: http://www.cijoint.fr/cjlink.php?file=cj201109/cijibOAA4M.xls

    eric
    1. Contributeur
      Bonjour à tous

      Avec XL2007

      créer un filtre sur la zone de nombres (les nombres sont en B4:B10 pour exemple)
      filtrer par couleur==> les cellules non vertes sont masquées
      en dessous (b11 par ex) ou ailleurs du tableau,écrire
      =SOUS.TOTAL(109;B4:B10)

      109 indique que l'on additionne pas les cellules masquée


      1. Bonjour Michel,

        On peut aussi utiliser : =SOUS.TOTAL(9;B4:B10)
        (pour ne compter que les cellules non masquées avec XL2003 et au-delà....)
        avec XL2007 pour le filtre sur la couleur.
      2. Merci à tous pour vos réponse. J'ai opté pour la solution VBA et ça marche!
    2. Bonjour,

      Je suppose que ce sont des nombres (et pas seulement des chiffres) qui sont écris en vert.

      Sans utiliser le VBA, il faudrait savoir pourquoi ces nombres sont écris en vert.
      S'agit-il d'une mise en forme conditionnelle ?
      1. Ce sont effectivement des nombres.
        Ces nombres sont en vert parce que je les ai mis volontairement de cette couleur. Le principe est de faire la somme des nombres que lorsque ceux ci ont été validés. J'avais donc choisi d'indiquer la validation par une couleur. Ce n'est pas une MFC, seulement une modification manuelle de la police des nombres.
        Il est fort probable que ce ne soit pas la solution la plus simple mais c'est la seule qui m'est venue à l'esprit. Je suis ouvert à toute aide...
        Merci d'avoir répondu si vite.
        1. Le plus simple est d'utiliser une colonne pour cocher les nombres validés dans la quelle il suffit de mettre un x.
          C'est beaucoup plus pratique pour effectuer tous les traitements désirés.
          Tu peux utiliser SOMME.SI pour les totaux et une MFC pour mettre en vert les nombres validés
          1. Re,

            Bien sur que ça marche !!! Eric n'a pas l'habitude de répondre n'importe quoi !
            Mais tu as dis toi-même : je ne connais rien au langage VBA
            Est-ce bien raisonnable de choisir cette solution ?
            La solution de michel me semble très simple et bien plus adaptée !
            1. Même avec mes connaissances limitées j'ai réussi à entrer cette fonction en VBA donc...

              J'ai pris le problème avec la première solution que l'on m'avait fourni et comme c'était la VBA je me suis lancé, avec succès!
              1. Contributeur
                Excuse moi de t'avoir dérangé alors
                je note ton pseudo pour ne pas renouveler cet impair
              2. aucun dérangement, je l'avais précisé, toute aide était la bienvenue!
                Merci encore