Compter cellules couleurs


#1

Bonjour à tous,

Je reviens sur mon sujet déjà traité et qui me repose problème. Il s’agit de compter des cellules de couleurs dans un tableau. On m’avait donné la réponse, que j’avais mis en pratique et qui a fonctionné …Hors, ça ne marche plus :frowning:

La solution m’avait été donnée par mdo100 au mois de mars dernier.

Où ais-je bien pu pêché encore ? Je ne fais que rajouter des lignes dans mon tableau …

Je ne peux mettre mon fichier en ligne, il contient des renseignements personnels et confidentiels.

En vous remerciant, je vous souhaite un très bon WE.

DMT


#2

Bonjour @DMT,

Si ça ne fonctionne plus, c’est que tu as fait une boulette quelque part :stuck_out_tongue_winking_eye: non !

Donne au moins la structure de ton fichier sans données confidentielles, car Excel et moi sommes aveugles :dark_sunglasses: dans ce cas.

@+


#3

Bonjour et merci de la réponse rapide,

J’ai enlevé des données qui ne sont pas utiles pour la manip. J’espère que tu vas trouver où j’ai été loger une erreur …

Dans le fichier, il y a des lignes colorées en mauve, je dois en retrouver le nombre en bas dans la case correspondante.

De même pour les catégories manquantes surlignées en jaune à droite.

Merci de ton aide, je sais que tu vas trouver rapidement, pour toi c’est instinctif …

DMT.

Exemple.xlsx (29.4 KB)


#4

Bonjour,
La fonction couleur n’est pas définie dans ton fichier

D’une manière générale c’est une mauvaise idée de stocker une information dans la couleur d’une cellule.
Il vaut mieux rajouter une colonne supplémentaire et y stocker cette information


#5

La couleur correspond à une personne décédée … Mais je peux éventuellement rajouter une colonne. La couleur permet de voir tout de suite l’événement …

DMT


#6

Dans ce cas il vaut mieux ajouter une colonne pour avoir l’info dans Excel.
Ensuite pour garder le format de ton choix tu peux faire une mise en forme conditionnelle se basant sur cette colonne :wink:


#7

OK, je fais l’essai et je reviens …


#8

Re @DMT
Salut @DocteurExcel,

@DMT, le 5 mars de cette année, je t’écrivais ceci:

“Ça ne pouvait pas fonctionner, puisqu’il y manquait le code VBA essentiel pour ce genre de requête Excel.”

Et bien je réitère mon propos, puisque tu commets la même erreur, a savoir qu’il n’y a pas le code VBA dans ton fichier :joy:

Tu disais " il est “bourrin” le DMT." Je vois que 4 mois plus tard, tu n’as pas changé :joy::joy: :rofl:

Bon allez rien que pour toi, je te remets le code:

Option Explicit
Function couleur(range_data As Range, criteria As Range) As Long

    Dim datax As Range
    Dim xcolor As Long
        xcolor = criteria.Interior.ColorIndex
        For Each datax In range_data
            If datax.Interior.ColorIndex = xcolor Then
                couleur = couleur + 1
            End If
        Next datax
        
End Function

Et ton fichier en retour ICI==> DMT V1.xlsm (36,5 Ko)

Cordialement.


#9

Rouge de honte qu’il est … J’étais persuadé de l’avoir incorporé :tired_face:

Merci de m’avoir corrigé.

J’avoue ne pas tout comprendre dans le code VBA, si tu as encore un peu de temps … une petite explication serait la bien venue.

DMT.


#10

Re @DMT,

Ça tombe bien, moi non plus :wink:

Déjà il s’agit d’une fonction personnalisée du même type que les autres fonctions propres à Excel (genre fonction SI, OU, ET etc…)

Bon en gros, avec mon anglais de nos campagnes françaises :thinking:

Option Explicit
'Déclaration variable obligatoire

Function couleur(range_data As Range, criteria As Range) As Long
'Fonction couleur(type données en plage, type critère en plage) en type arrondies à 0,5 au nombre pair le plus proche

    Dim datax As Range
    'Déclaration de la variable datax en plage

    Dim xcolor As Long
    'Déclaration de la variable xcolor en type arrondies à 0,5 au nombre pair le plus proche

        xcolor = criteria.Interior.ColorIndex
        'Variable = le critère de la couleur intérieur de la cellule

        For Each datax In range_data
        'Pour chaque variable datax dans la plage

            If datax.Interior.ColorIndex = xcolor Then
           'Si la variable datax intèrieur de la couleur = à la couleur recherchée

                couleur = couleur + 1
               'Compteur couleur = couleur + 1

            End If
            'Fin de la condition

        Next datax
        'Fin de la boucle

End Function
'Fin de la fonction

Voilà, voilà… J’espère que cela t’aidera un peu a comprendre.

Cordialement.


#11

C’est parfait, je te remercie beaucoup.

Cordialement, DMT


#12

Re @DMT,

Si ton problème est résolu n’oublie pas de cliquer sur le petit :white_check_mark: sous la solution pour la valider.

Merci.


#13

je viens de le faire.