Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 compter les cellules de la même couleur

bobafric

XLDnaute Occasionnel
Bonjour et Bonne Année 2025 à tous.
Premier de l'année, dans le tableau F2- I11 j'ai des cellules identiques en valeurs mais certaines de la même valeur sont d'une couleur différente.
Je voudrai dans la colonne A afficher tous les noms
, dans colonne B compter combien de cellules de la même valeur,
et colonne C énumérer le nombre de cellule de même valeur mais de couleur différente.
Soit Paul est cité 4 fois mais il n'y a que 3 cellules en couleur.
Dans mon exemple je les ai comptées et je voudrai que ce soit automatique.
Merci pour votre aide
 

Pièces jointes

  • essai.xlsx
    18.2 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour le forum,

Je croyais que DisplayFormat existait à partir d'Excel 2007 mais il semble que ce soit à partir d'Excel 2010.

Cette propriété étudie les couleurs appliquées manuellement, par MFC ou celles du tableau structuré.

Il paraît souhaitable de comptabiliser aussi la couleur incolore ou la couleur blanche.

A+
 

bobafric

XLDnaute Occasionnel
Je trouve pour Paul et René 4occurences et 3 couleurs.
Mais ne pouvez vous pas essayer sans tableau c'est ce que je vais appliquer à mon fichier qui comporte beaucoup plus de lignes et colonnes. Je pourrai modifier le vba plus facilement. Merci encore
 

Pièces jointes

  • essai 3.xlsx
    16.7 KB · Affichages: 4

laurent950

XLDnaute Barbatruc
Bonjour Le Forum

Une solution pour (Le Fichier en Poste #1) : via un tableau structuré et le comptage des couleurs pour le nombre de noms

VB:
' Règles de comptage et d'application des couleurs dans le Tableau14
' Ligne 1 (Titre) : Pas de couleur modifiée, ligne fixe.
' Ligne 2 et suivantes :
'   --->>  Ligne paire (ex : 2, 4, 6, ...) : Couleur par défaut de la feuille Excel (sans remplissage).
'   --->>  Ligne impaire (ex : 3, 5, 7, ...) : Couleur Bleu ciel léger (par défaut de la mise en forme du tableau).
'
' Option :
'   --->>  Couleur personnalisée par l'utilisateur :
'   --->>  Toute couleur ajoutée par l'utilisateur (ex : jaune, rouge) :
'               * est prise en compte comme une couleur distincte pour cette cellule.
'               * La couleur d'une cellule modifiée par l'utilisateur sur une ligne donnée
'               * sera associée à l'entrée correspondante dans le comptage.
'
' Méthode d 'application :
' ----------------------
'   --->>  Parcourir les cellules du tableau pour compter les noms.
'   --->>  Identifier les couleurs par défaut et les couleurs personnalisées appliquées par l'utilisateur.
'   --->>  Générer un rapport sur le nombre total de noms et la couleur associée à chaque entrée.

Sub AnalyseNomsEtCouleursTableau14()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1) ' Changez "Sheet1" en fonction du nom de votre feuille
   
    ' Plage du Tableau14 (F1:I11)
    Dim tableauPlage As Range
    Set tableauPlage = ws.Range("F2:I11") ' Exclu la ligne de titre
   
    Dim dictNoms As Object
    Set dictNoms = CreateObject("Scripting.Dictionary")
   
    Dim couleurDict As Object
    Set couleurDict = CreateObject("Scripting.Dictionary")
   
    Dim cell As Range
    Dim currentName As Variant
    Dim rowIndex As Long
    rowIndex = 2 ' Début de la ligne pour afficher les résultats
   
    ' Remplir le dictionnaire des noms et compter leurs occurrences
    For Each cell In tableauPlage
        currentName = cell.Value
        If currentName <> "" Then
            ' Compter le nombre d'occurrences
            If Not dictNoms.exists(currentName) Then
                dictNoms.Add currentName, 1
            Else
                dictNoms(currentName) = dictNoms(currentName) + 1
            End If
           
            ' Vérifier les couleurs et les ajouter au dictionnaire des couleurs
            If Not couleurDict.exists(currentName) Then
                Set couleurDict(currentName) = CreateObject("Scripting.Dictionary")
            End If
            ' Ajouter la couleur de fond de la cellule
            If Not couleurDict(currentName).exists(cell.Interior.Color) Then
                couleurDict(currentName).Add cell.Interior.Color, 1
            End If
        End If
    Next cell
   
    ' Effacer le tableau existant (si nécessaire)
    ws.Range("A1:C21").ClearContents
   
    ' Écrire les en-têtes dans la première ligne
    ws.Cells(1, 1).Value = "Nom"
    ws.Cells(1, 2).Value = "Nbr Total Nom"
    ws.Cells(1, 3).Value = "Nbr Total Couleur"
   
    ' Remplir les résultats dans la plage A2:C21
    For Each currentName In dictNoms.keys
        ws.Cells(rowIndex, 1).Value = currentName
        ws.Cells(rowIndex, 2).Value = dictNoms(currentName) ' Nombre d'occurrences
        ws.Cells(rowIndex, 3).Value = couleurDict(currentName).Count ' Nombre de couleurs distinctes
        rowIndex = rowIndex + 1
    Next currentName

End Sub
 

Discussions similaires

Réponses
19
Affichages
768
Réponses
27
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…