Macro somme cellules de couleur

Cyrielle70 Messages postés 10 Statut Membre -  
maxmen67 Messages postés 58 Statut Membre -
Bonjour,

je dois faire un tableau excel je pense que je dois utiliser la fonction macro (je ne m'y connais pas trop),

dans les cellules entre D3 et AH114 il y aura que des cellules en couleurs (rouge, bleu, jaune, violet, rose). chaque fin de ligne et colonne j'aimerai avoir le nombre de cellules en rouge, bleu, jaune, violet, rose.

Est ce que quelqu'un aurait une solution pour moi svp.

merci

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour
    Ces couleurs proviennent d'une mise en forme conditionnelle ou pas ???
    0
    1. Cyrielle70 Messages postés 10 Statut Membre
       
      Justement sur différent forum j'ai vu cette mise en forme, mais je ne sais pas du tout ce que c'est (pourtant je pensais "maitriser excel).

      C'est moi qui fait mettre les couleurs dans les cellules manuellement.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Cyrielle70 Messages postés 10 Statut Membre
       
      Bonjour,

      Vu le nombre de cellules (pas loin de 3800), il faut utiliser les mise en forme conditionnelle (MFC) pour les couleurs et ensuite suivant la complexite des tests faire:
      soit des formules
      soit du code VBA
      pour compter les cellules par couleur par ligne

      A vous de nous en dire un peu plus
      0
    3. Cyrielle70 Messages postés 10 Statut Membre > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour,

      Merci, mais je crois que je ne peux pas utiliser la mise en forme conditionnelle car mon tableau concerne un planning pour des enfants, les cases sont vides, il y a juste de la couleur (soit ils sont dans leur famille couleur verte, soit en colo jaune, et d'autres cas en tout j'ai 6 couleurs) ; je peux donc mettre la couleur uniquement manuellement.

      Pour chaque semaine, chaque mois,chaque enfants ça change.

      Vu qu'il y a moins de cellules (plage D3:AH60) est ce que je ne peux pas uniquement utiliser les codes VBA ?

      merci pour vos réponses ;)
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Cyrielle70 Messages postés 10 Statut Membre
       
      Re,

      un fichier modele microsoft sans VBA qui est assez facile a modifer

      https://www.cjoint.com/c/FAikuX0hcNf

      A+
      0
    5. Cyrielle70 Messages postés 10 Statut Membre
       
      Merci pour ton aide, mais j'ai utilisé pour le moment la facon de maxmen67 même si j'ai réussi uniquement pour la 1ere ligne... (j'en ai 60)...
      merci:)
      0
  2. maxmen67 Messages postés 58 Statut Membre 1
     
    Bonjour;

    Faire un clic droit sur l'onglet de la feuille qui contient le tableau puis cliquer sur "visualiser le code" puis coller le code suivant :

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Comptage des couleurs en ligne

    Dim CompterCellules As Integer, iCell, PlageTest
    Set PlageTest = Range("D3:AH3")

    'compteur pour cellules rouges

    Application.ScreenUpdating = False
    For Each iCell In PlageTest
    If iCell.Interior.ColorIndex = 3 Then
    CompterCellules = CompterCellules + 1
    End If
    Next iCell
    Range("AJ3") = CompterCellules

    'compteur pour cellules jaunes

    For Each iCell In PlageTest
    If iCell.Interior.ColorIndex = 6 Then
    CompterCellules1 = CompterCellules1 + 1
    End If
    Next iCell
    Range("AI3") = CompterCellules1

    'compteur pour cellules bleues

    For Each iCell In PlageTest
    If iCell.Interior.ColorIndex = 33 Then
    CompterCellules2 = CompterCellules2 + 1
    End If
    Next iCell
    Range("AK3") = CompterCellules2

    'compteur pour cellules violettes

    For Each iCell In PlageTest
    If iCell.Interior.ColorIndex = 13 Then
    CompterCellules3 = CompterCellules3 + 1
    End If
    Next iCell
    Range("AL3") = CompterCellules3

    'compteur pour cellules roses

    For Each iCell In PlageTest
    If iCell.Interior.ColorIndex = 7 Then
    CompterCellules4 = CompterCellules4 + 1
    End If
    Next iCell
    Range("AM3") = CompterCellules4

    'comptage cellules en colonnes

    Dim CompterCol As Integer, iCelll, Testplage
    Set Testplage = Range("D3:D63")

    'compteur pour cellules rouges

    Application.ScreenUpdating = False
    For Each iCelll In Testplage
    If iCelll.Interior.ColorIndex = 3 Then
    CompterCol = CompterCol + 1
    End If
    Next iCelll
    Range("D65") = CompterCol

    'compteur pour cellules jaunes

    Application.ScreenUpdating = False
    For Each iCelll In Testplage
    If iCelll.Interior.ColorIndex = 6 Then
    CompterCol1 = CompterCol1 + 1
    End If
    Next iCelll
    Range("D64") = CompterCol1

    'compteur pour cellules bleues

    Application.ScreenUpdating = False
    For Each iCelll In Testplage
    If iCelll.Interior.ColorIndex = 33 Then
    CompterCol2 = CompterCol2 + 1
    End If
    Next iCelll
    Range("D66") = CompterCol2

    'compteur pour cellules violettes

    Application.ScreenUpdating = False
    For Each iCelll In Testplage
    If iCelll.Interior.ColorIndex = 13 Then
    CompterCol3 = CompterCol3 + 1
    End If
    Next iCelll
    Range("D67") = CompterCol3

    'compteur pour cellules roses

    Application.ScreenUpdating = False
    For Each iCelll In Testplage
    If iCelll.Interior.ColorIndex = 7 Then
    CompterCol4 = CompterCol4 + 1
    End If
    Next iCelll
    Range("D68") = CompterCol4

    End Sub


    cordialement
    0
    1. Cyrielle70 Messages postés 10 Statut Membre
       
      Bonjours
      Merci pour ton aide, dans mon tableau j'ai réussi à utiliser ta facon, mais par contre j'y arrive uniquement pour la premiere ligne du tableau numéro 3 mais je n'y arrive pas pour la ligne 4. J'ai essayer de le mettre directement à la liste mais pas possible ni en copiant deux fois les codes....

      Cordialement
      0
    2. maxmen67 Messages postés 58 Statut Membre 1
       
      Salut;

      Désolé pour le temps de réponse...

      Le week-end est passé par là !

      Pour faire les autres lignes et colonnes, il faut recopier le code et changer certaines données telles que:

      l'adresse des cellules à compter
      et incrémenter les variables ("comptercellules","icell","plagetest") pour pas qu'il y'ai d'erreur dans le comptage.

      voir code ci-dessous:


      'Comptage des couleurs en ligne 2 ------------------_-_-_
      Dim CompterCellules11 As Integer, iCell11, PlageTest1
      Set PlageTest1 = Range("D4:AH4")

      'compteur pour cellules rouges ---------------------------------------------------

      Application.ScreenUpdating = False
      For Each iCell11 In PlageTest1
      If iCell11.Interior.ColorIndex = 3 Then
      CompterCellules11 = CompterCellules11 + 1
      End If
      Next iCell11
      Range("AJ4") = CompterCellules11



      Voici un lien vers un fichier exemple que j'ai fais:

      https://www.cjoint.com/c/FAljgfs3knq
      0
    3. Cyrielle70 Messages postés 10 Statut Membre
       
      super merci beaucoup c'est top :)
      0