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: 16

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+
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Dans la PJ #19, il me semble que pour Paul et René mes valeurs sont correctes.
Quelles valeurs trouvez vous ?

Paul : 4 occurrences , 2 couleurs : Blanc et Vert
1735981898286.png

René : 4 occurrences , 2 couleurs : Blanc et Bleu
1735981967865.png
 

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
1735989751538.png

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
767
Réponses
27
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
315 236
Messages
2 117 644
Membres
113 216
dernier inscrit
factory613