Comptage cellule de couleurs en vba

Résolu
Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je cherche une macro vba (comptage de cellule ) qui permette de faire ressortir la couleur majoritaire d'un ensemble de cellules.

Ex : si dans les cellules C5 à L5 j'ai 4 cellules vertes et 3 cellules bleues et 1 rouge le résultat doit être vert.

Autre question est il possible d'exclure de ce type de calcul une des couleur ?

Merci par avance pour vos idées et conseils :-)

Configuration: Windows / Firefox 78.0

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
en général, une macro se crée, elle ne se trouve pas.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
un exemple, en excluant le blanc et le gris:
Function ccc() As Long
Dim rg As Range, cl As Range, colors As Scripting.Dictionary, col As Long, maxnb As Long, colmax As Long, koul
Set rg = Range("c5:l5")
Set colors = New Scripting.Dictionary
For Each cl In rg
    col = cl.Interior.Color
    Select Case col
        Case vbWhite, 8421504:
        Case Else:
            If colors.Exists(col) Then
                colors(col) = colors(col) + 1
            Else
                Call colors.Add(col, 1)
            End If
                
    End Select
Next cl
colmax = 0
maxnb = 0
For Each koul In colors.keys
    If colors(koul) > maxnb Then
        maxnb = colors(koul)
        colmax = koul
    End If
Next koul
ccc = colmax
End Function
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour à tous les deux

Pas très clair !
Peux tu envoyer un bout de fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

Cdlmnt
0
Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci pour ton aide.

Comme convenu, voici le lien vers le fichier https://www.cjoint.com/c/JGykzf2XKhO.

Cordialement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je ne vois rien dans ton fichier qui permette de mieux comprendre ta demande.
la fonction proposée te retourne la couleur la plus présente dans un ensemble de cellules.
0
Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,

Désolée de vous solliciter de nouveau.

Comme je l'indiquais je ne maîtrise pas du tout VBA.

Pouvez-vous m'indiquer comment intégrer la macro communiquée par ccm81 dans mon fichier cela me rendrait grand service.

Cordialement
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
avant tout, il serait utile que tu expliques précisément ce que tu veux obtenir.
"faire ressortir la couleur" et "le résultat doit être vert", cela ne veut rien dire.
essaie d'être précis et concret.
"la macro communiquée par ccm81": c'est quoi et où?
prend du temps pour réfléchir et bien expliquer, peut-être en montrant un exemple du résultat attendu.
0
Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pour faire simple peux-tu juste m'indiquer où je dois coller le code que m'a communiqué ccm81 pour que je puisse le tester. Je n'arrive pas à le faire fonctionner quand je le colle à ma macro n°18.

Function ccc() As Long
Dim rg As Range, cl As Range, colors As Scripting.Dictionary, col As Long, maxnb As Long, colmax As Long, koul
Set rg = Range("c5:l5")
Set colors = New Scripting.Dictionary
For Each cl In rg
col = cl.Interior.Color
Select Case col
Case vbWhite, 8421504:
Case Else:
If colors.Exists(col) Then
colors(col) = colors(col) + 1
Else
Call colors.Add(col, 1)
End If

End Select
Next cl
colmax = 0
maxnb = 0
For Each koul In colors.keys
If colors(koul) > maxnb Then
maxnb = colors(koul)
colmax = koul
End If
Next koul
ccc = colmax
End Function

Merci par avance :-)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dautomne Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
cela te semble certainement plus simple de ne pas prendre le temps de répondre à mes questions.
je ne pourrai cependant pas t'aider si tu n'y réponds pas.
de plus, peux-tu prendre le temps de comprendre et d'appliquer ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0