Couleurs format MFC non prises en compte dans une formule

Résolu/Fermé
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020 - Modifié le 30 juil. 2020 à 09:48
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 30 juil. 2020 à 23:35
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
A voir également:

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
30 juil. 2020 à 13:17
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
0
Dautomne Messages postés 20 Date d'inscription mercredi 22 juillet 2020 Statut Membre Dernière intervention 30 juillet 2020
Modifié le 30 juil. 2020 à 22:19
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.
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
30 juil. 2020 à 23:35
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?
0