Comptabiliser les cellules colorées par mise en forme conditionnelle

Bonjour le forum

Dans mon tableau j’ai plusieurs mises en forme conditionnelles dans des colonnes, j’aimerais bien comptabiliser le nombre de cellules colorisées par celles-ci dans une ligne.

Pour info les valeurs dans mon tableau sont le résultat d’une liaison dont celles-ci changent, dans le fichier joint les données sont "normales".

Merci par avance bon week-end

39classeur1.xlsx (16.01 Ko)

Bonjour,

je trouve que la mfc est vraiment bizarre (non cohérente)

vérifie les colonnes suivante

en colonne - J, O, P, R, V, W le 4èm n'est pas inscrit malgré les doublons --> voir cellule jaune

en colonne - U, X, Y le 4èm et + est inscrit en comptant les doublons

en comptant les cellules oubliées le compte est bon,

26starwaso-test.xlsm (28.52 Ko)

Bonjour,

Voici une fonction perso :

Function CompterMFC(Plage As Range, Titre_a_Eviter As String, Max As Integer, NumLigne As Integer) As Integer

    Dim I As Integer
    Dim J As Integer
    Dim Total As Long

    For I = Plage(1).Column To Plage(1, Plage.Columns.Count).Column

        If Cells(5, I).Value <> Titre_a_Eviter Then

            For J = 1 To Max

                On Error Resume Next
                If Cells(NumLigne, I).Value = Application.Large(Range(Columns(I).Address), J) Then

                    If Err.Number = 0 Then Total = Total + 1: Exit For

                End If

            Next J

        End If

    Next I

    CompterMFC = Total

End Function

Que tu utilise de la façon suivante en AE6 et à tirer vers le bas :

=CompterMFC($I$6:$AD$25;"N°";4;LIGNE())

"Plage" représente la plage où chercher les x plus grandes valeurs

"Titre_a_Eviter" est le titre de la colonne à ne pas prendre en compte

"Max" est le nombre de plus grandes valeurs

"NumLigne" est le numéro de la ligne courante

La fonction utilise la fonction VBA "Large()" (Grande.Valeur dans une feuille de calcul) donc pour avoir les totaux par ligne, la fonction compare la cellule en cours avec ce que retourne la fonction Large() et si égal, fin de boucle (J) une fois toutes les colonnes parcourues, retour du total.

Bonjour i20100,

Désolé mais je ne vois pas ce que tu veux dire avec tes cellules jaunes, la MFC est pourtant claire, elle recherche les 4 plus grandes valeurs et colore celles-ci ! quand dans la colonne J il y a 67, 70, 50, 50 reconnues comme être les 4 plus grandes valeurs, je ne vois pas ce que vient faire 45 qui est en cinquième position ?

La même fonction en matricielle si tu ne veux pas avoir à indiquer le numéro de ligne :

Function CompterMFC(Plage As Range, Titre_a_Eviter As String, Max As Integer) As Integer()

    Dim Tbl() As Integer
    Dim I As Integer
    Dim J As Integer
    Dim K As Integer
    Dim L As Integer
    Dim Total As Long

    ReDim Tbl(1 To Plage.Rows.Count, 1 To 1)

    For I = Plage(1).Row To Plage(Plage.Rows.Count, 1).Row

        For J = Plage(1).Column To Plage(1, Plage.Columns.Count).Column

            If Cells(5, J).Value <> Titre_a_Eviter Then

                For K = 1 To Max

                    On Error Resume Next
                    If Cells(I, J).Value = Application.Large(Range(Columns(J).Address), K) Then

                        If Err.Number = 0 Then Total = Total + 1: Exit For

                    End If

                Next K

            End If

        Next J

        L = L + 1: Tbl(L, 1) = Total: Total = 0

    Next I

    CompterMFC = Tbl()

End Function

Que tu utilises de cette façon, tu sélectionnes ta plage de AE6 à AE25 puis dans la barre de formule tu entres la formule ci-dessous que tu valide en matricielle (Ctrl+Maj+Entrée)

=CompterMFC($I$6:$AD$25;"N°";4)

Bonjour,

Merci pour vos réponse i20100 Theze

Au sujet de la première solution sans macro, dans le fichier joint j'ai oublié de mettre le format nombre et les colonnes vides sont utilisées par des autres valeurs.

12starwaso-test.xlsm (26.74 Ko)

Les solutions par macro ne fonctionnent pas dans mon cas ci-joint les tableaux ou j'ai fait une mauvaise manipulation …Lol

Pour info j'ai plusieurs tableaux dans le même format dans une feuille ci-joint.

14classeur2.xlsm (51.21 Ko)

Bon dimanche

Oups Je n'avais pas fait attention au premier fichier il y a bien une macro

Bonjour,

Erreur rectifiée, j'avais oublié de prendre en compte les colonnes vides !

Voici ton fichier en retour :

re,

j'ai fais le test sur les 2 premier tableau et le compte est bon,

Function CountOf_MFC(LigneDebut As Integer, LigneFin As Integer, ParamArray Ranges() As Variant)
Dim lReturn As Long, i As Long, rResult As Range, rArea As Range
Dim c As Range, nb As Integer
Dim tb()

For i = LBound(Ranges) To UBound(Ranges)
    If TypeName(Ranges(i)) = "Range" Then
        If rResult Is Nothing Then
            Set rResult = Ranges(i)
        Else
            Set rResult = Application.Union(rResult, Ranges(i))
        End If
    End If
Next i

For Each c In rResult
    n = c.Column
    Set plgCol = Range(Cells(LigneDebut, n).Address, Cells(LigneFin, n).Address)

    For i = 1 To 20
        ReDim Preserve tb(i)
        tb(i) = Application.Large(plgCol, i)
        If i >= 5 Then
          If tb(i) <> tb(i - 1) Then ReDim Preserve tb(i - 1): Exit For
        End If
    Next i
    If Not IsError(Application.Match(c, tb, 0)) Then nb = nb + 1
    Erase tb
Next c
CountOf_MFC = nb
End Function

Bonjour

Un grand MERCI Theze i20100

Bonne journée

Bonsoir,

Les macros de i2010 de Theze fonctionnent, mais je rencontre un problème quand je change mes données dans le fichier.

Mais je pense que c'est de ma faute car je n'ai pas indiqué qu'ils y avaient d'autres macros dans celui-ci.

Donc ci-joint le fichier "complet"

Merci et je suis désolé je pensais que cela suffisait.

25stats.xlsm (394.17 Ko)

Bonne soirée

[quote=starwaso post_id=742482 time=1552128656 user_id=15187]

Bonjour le forum

Dans mon tableau j’ai plusieurs mises en forme conditionnelles dans des colonnes, j’aimerais bien comptabiliser le nombre de cellules colorisées par celles-ci dans une ligne.

Pour info les valeurs dans mon tableau sont le résultat d’une liaison dont celles-ci changent, dans le fichier joint les données sont "normales".

Merci par avance bon week-end

re,

Vérifie que les arguments LigneDebut et LigneFin soient bien renseignés,

countofmfc

Bonjour,

Comment on fait pour obtenir cette fenêtre ?

re,

sélectionne la cellule contenant la formule,

clic sur Fx juste à gauche de la barre de formule.

fx

Merci

J'ai ceci

capture d ecran 48

Pour info j'ai la version Microsoft Office famille et étudiant 2016

re,

est ce que 250 est la dernière ligne du premier tableau ?

au lieu d'une fonction perso, aimerais-tu mieux une macro qui traite tous les tableaux en une seule action ?

oui c'est bien la dernière

re,

sur le fichier transmit la dernière ligne du premier tableau est 50 et non 250 ?

au lieu d'une fonction perso, aimerais-tu mieux une macro qui traite tous les tableaux en une seule action ?

pour résumer j'ai 10 tableaux espacés par 3 lignes

4stats-3.xlsm (394.43 Ko)

L'idéal je pense une macro qui traite tous les tableaux en une seule action

re,

sur le fichier transmit la dernière ligne du premier tableau est 50 et non 250 ?

au lieu d'une fonction perso, aimerais-tu mieux une macro qui traite tous les tableaux en une seule action ?

Rechercher des sujets similaires à "comptabiliser colorees mise forme conditionnelle"