Couleurs format MFC non prises en compte dans une formule [Résolu]

Signaler
Messages postés
20
Date d'inscription
mercredi 22 juillet 2020
Statut
Membre
Dernière intervention
30 juillet 2020
-
Messages postés
12339
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 septembre 2020
-
Bonjour à tous,

La formule (cellule M5) ci-après fonctionne parfaitement quand je remplis les cellules C5:L5 avec des couleurs VBA.

Sub TEST()
    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
            Debug.Print col
    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
    Sheets("Synthèse résultats ctrl période").Range("M5").Interior.Color = colmax
End Sub
    


Mon souci, les cellules C5:L5 de mon fichier sont à priori remplies avec des couleurs au format MFC et ne semblent pas prises en compte dans la formule.

Je n'ai aucune notion vba, quelqu'un peut-il modifier ce code pour que les couleurs MFC soient prises en compte dans la formule ?

Par ailleurs, est-il possible de modifier le code suivant pour que la couleur reprise dans la cellule H5 soit au même format que dans les autres cellules.

Dim rg As Range, cl As Range, noui As Integer, nnon As Integer, couleur As Integer, ncel As Long
Set rg = Sheets("Fiche de contrôle").Range("$D$295:$D$297")
noui = 0
nnon = 0
ncel = rg.Count
For Each cl In rg
    Select Case cl.Value
        Case "NON":
            nnon = nnon + 1
        Case "OUI":
            noui = noui + 1
    End Select
Next cl
If noui = ncel Then
    couleur = 10 'vert
Else
    If nnon = ncel Then
        couleur = 9 'rouge
    Else
        If noui + nnon = ncel Then
            couleur = 46 'orange
        Else
            couleur = 48 'gris
        End If
    End If
End If
Sheets("Synthèse résultats ctrl période").Range("H39").Interior.ColorIndex = couleur

End Sub


Je vous joins mon fichier :

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

Merci par avance pour votre aide.

Cordialement.

Configuration: Windows / Firefox 78.0

1 réponse

Messages postés
12339
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 septembre 2020
694
bonjour,
as-tu l'intention d'acquérir des notions vba? dans quel contexte fais-tu ce travail?

tu écris "La formule (cellule M5) ci-après fonctionne parfaitement", et il n'y a aucune formule.
tu pourrais écrire "la routine TEST fonctionne parfaitement". ou utiliser "code VBA" au lieu de formule.
plus tu es clair, mieux nous pouvons t'aider.

en ce qui concerne ton premier soucis, moi j'essaierais en modifiant ainsi la ligne 6:
col = cl.DisplayFormat.Interior.Color
je n'ai pas testé.

en ce qui concerne ton second soucis, "la couleur reprise dans la cellule H5 soit au même format que dans les autres cellules":
- les couleurs n'ont pas de format, que veux-tu obtenir?
- quelles autres cellules?
- donne peut-être un exemple, éventuellement en utilisant le contenu du fichier que tu partages, cela t'aidera à être concret
Messages postés
20
Date d'inscription
mercredi 22 juillet 2020
Statut
Membre
Dernière intervention
30 juillet 2020

Bonjour yg_be,

Merci beaucoup :-) mon souci 1 est à priori réglé.

Concernant le souci 2 :

Les codes couleurs utilisés pour la cellule H5 sont différents de ceux des autres cellules C5:G5/I5:L5. Je voudrai simplement modifié le code couleur utilisé pour cette cellule afin d'obtenir un remplissage uniforme de l'ensemble des cases

Voici les codes couleurs qui ont été utilisés dans les autres cellules (C5:G5/I5:L5):

Vert :

        .PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0



Rouge foncé :

        .PatternColorIndex = xlAutomatic
.Color = 192
.TintAndShade = 0


Orange foncé :

        .PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.249946592608417


Enfin Gris :

        .PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349986266670736


Fichier exemple :

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

Les macros présentent dans le module 1 alimentent les cellules C5:D5.


Cordialement.
Messages postés
12339
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 septembre 2020
694 >
Messages postés
20
Date d'inscription
mercredi 22 juillet 2020
Statut
Membre
Dernière intervention
30 juillet 2020

as-tu l'intention d'acquérir des notions vba? dans quel contexte fais-tu ce travail?

le module Module1 est rempli de code verbeux que je ne veux pas essayer de lire. si tu veux y ajouter H5, qu'est-ce qui t'en empêche?