Comptage cellule de couleurs en vba

Résolu/Fermé
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020 - 24 juil. 2020 à 08:56
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 24 juil. 2020 à 23:14
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 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
24 juil. 2020 à 10:46
bonjour,
en général, une macro se crée, elle ne se trouve pas.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
24 juil. 2020 à 12:01
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 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
24 juil. 2020 à 11:13
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 mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 12:26
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 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
24 juil. 2020 à 14:10
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 mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
Modifié le 24 juil. 2020 à 15:57
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 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 16:15
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 mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
Modifié le 24 juil. 2020 à 17:36
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 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
24 juil. 2020 à 17:40
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