EXCEL - somme automatique sur chgt de couleur

laurent77 -  
 néné -
Bonjour,

Je suis à la recherche d'un expert pour une problématique sous excel. En effet, j'ai un tableau qui contient toujours les mêmes valeurs. Dans ce tableau, la valeur prise en compte dans chaque cellule est manuelle et symbolisée par un changement de couleur. Par exemple, si j'ai un cellule contenant une valeur qui n'a pas encore été utilisé, la couleur sera jaune et une fois utilisée, la personne en charge de ce fichier la passera à la couleur verte. Je voudrais que ce changement de couleur soit vienne compléter la somme automatique gérée en fin de colonne..j'éspère avoir été clair dans mes explications.

Merci

laurent
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  1. supernico Messages postés 584 Statut Membre 193
     
    par exemple, compter le nombre de cellules vertes ?
    0
  2. hosny
     
    je veux taider mais vraiment jai pas compris si tu peux etre plus clair
    0
    1. laurent77
       
      Bonjour,

      Merci de ton aide.

      L'idée est de valider une cellule "somme automatique" si et seulement si la ou les cellules concernées sont dans une couleur précise.
      par exemple, par défaut toutes les cellules d'une colonne sont blanches, de ce fait la cellule qui fait le totale est vide. lorsque je change
      la couleur d'une des cellule pour une couleur fixe, je veux que la cellule qui fait le total fasse la somme de cette dernière plus celle des autres qui pourraient changer de couleur par la suite...

      tu vois un peu mieux ?

      laurent
      0
  3. supernico Messages postés 584 Statut Membre 193
     
    0
    1. laurent77
       
      Bonjour et merci de ton aide. Cela fonctionne mais comment faire pour que cela soit dynamique à chaque changement de couleur de cellule ? je pensais à la notion de LOOP avec un arrêt quand toutes les cellules sont jaunes par exemple mais comment faire ?

      Merci de ton aide.

      Laurent
      0
  4. néné
     
    bJR

    Voici une fonction VBA personnalisée qui fait la somme de valeur qui sont dans des cellules blanches

    Function SOMMECOULEUR(PLAGE As Range) As Double
    Application.Volatile
    Dim Cellule As Range
    Dim TOTALPARTIEL As Double
    TOTALPARTIEL = 0
    For Each Cellule In PLAGE.Cells
    If Cellule.Interior.ColorIndex = 2 Then '2 égal blanc
    TOTALPARTIEL = TOTALPARTIEL + Cellule.Value
    End If
    Next Cellule
    SOMMECOULEUR = TOTALPARTIEL
    End Function
    0
    1. laurent77
       
      Merci pour la fonction, cela marche très bien. La particularité avec cette fonction s'est qu'elle ne semble pas être dynamique. En effet, elle fonctionne très bien si je prends une colonne pour laquelle je ne fais pas de modification mais j'aimerai que la fonction recalcule si je change à n'importe quel moment la couleur d'une cellule. Je me demandais si la notion de loop ne marcherait pas dans ce cas ? de plus, il y a un paramètre de fin puisque si toute les cellules de la plage sont en jaune par exemple, la fonction peut s'arrêter et la somme sera 0 !

      Merci de ton aide.

      Laurent
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m
     
    Bonjour à tous,

    pour rendre dynamique la plage B2:F17 en utilisant la proposition de Néné (je compte le rouge plus facile à voir!!!) par macro événementielle

    a copier coller dans le module feuille (clic droit sur l'onglet de la feuille et "visualiser le code"

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B2:F17")) Is Nothing Then: Exit Sub
    Dim Cellule As Range
    Dim TOTALPARTIEL As Double
    TOTALPARTIEL = 0
    For Each Cellule In Range("B2:F17").Cells
    If Cellule.Interior.ColorIndex = 3 Then '2 égal blanc
    TOTALPARTIEL = TOTALPARTIEL + Cellule.Value
    End If
    Next Cellule
    Range("H2") = TOTALPARTIEL
    End Sub

    en espèrant que...
    0
    1. laurent77
       
      Bonjour,

      Merci de ton aide mais une fois le code copié dans ma feuille, comment fais-je appelle à cette fonction ?

      laurent
      0
    2. laurent77
       
      Cela semble ne pas fonctionner ! merci de ton aide
      0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    sur une cellule avec une valeur, passe la couleur en rouge
    0
  8. laurent77
     
    J'ai trouvé une fonction qui fonctionne très bien mais pas de manière dynamique....

    -------------------------------
    Function SumByColor(PlageEntree As Range, CouleurPlage As Range) As Double
    Dim Cell As Range, TempSum As Double, ColorIndex As Integer
    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
    ----------------------------------------

    Si quelqu'un à une solution !

    merci
    0
  9. néné
     
    Bjr

    met ceux ci en événementionnel

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Calculate
    End Sub
    0
    1. laurent77
       
      Bonsoir,

      Je dois vraiment être une tange mais je ne comprends pas ta réponse....

      Que veux-tu dire par:
      ---
      met ceux ci en événementionnel

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Calculate
      End Sub
      ---

      Donne moi un exemple, c'est quoi en évenementionnel ???

      Merci de ton aide
      0
  10. DIMITRI618 Messages postés 14 Statut Membre 5
     
    Bonjour,
    Je n'ai pas très bien compris ton problème, mais essaie format-Mise en forme conditionnelle, sur les cellules que tu veux. Tu peux faire en sorte qu'Excel modifie la couleur de certaines cellules automatiquement suivant les critères que tu as définis.
    Bonne chance,
    @ +
    0
  11. néné
     
    bjr

    Clic droit l'onglet de la page ou ce trouve tes valeurs puis "Visualiiser le code"

    copie ce code en dessous General

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Calculate
    End Sub

    puis ferme la fenetre
    0