Macro mise en forme conditionnelle SI (apparition colonnes)

Bonsoir à tous,

J'ai parcouru le forum en long et en large avant de poser ma question mais je n'ai pas trouvé chaussure à mon pied et étant nouvelle avec VBA je galère un peu, je l'avoue.

Voici mon problème: j'aimerais qu'une mise en forme conditionnelle se mette si une valeur apparaît 2x (idem pour 3x etc) en C et qu'elle soit corréllée avec B. Je m'explique plus clairement

J'ai actuellement une plage A7:E60.

La colonne A comprend des dates qui s'affichent uniquement quand la cellule D de la même ligne est remplie par un chiffre

La colonne B doit comprendre une voire deux lettres (T, I, A,)

La colonne C doit comprendre un nombre (ex: 24, 42,125...) qui correspond à un numéro de voiture

La colonne D comprend un nombre (généralement de 1 à 20)

La colonne E est vierge et ne pourra comprendre que les lettres "DT"

Ce que je souhaite est de faire une mise en forme conditionnelle si et seulement si un numéro en C (numéro de voiture donc) apparaît 2x dans la plage A7:E60 ET QUE la cellule en B correspondant = T les deux fois. Dans ce cas là, il faudrait que la ligne correspondante apparaisse en jaune
Puis répéter l'opération si le numéro en de la voiture (Colonne C donc) apparaît 3x et que à chaque fois la valeur de la cellule en B = T (idem 4x et 5x)

Dans un second temps je souhaiterais (mais je vous avoue que je ne suis pas sûre d'y arriver ^^) que si un numéro apparaît 3x dans la plage A7:E60 ET QUE la cellule B correspond à T les 3x ET QUE la cellule E correspondante = DT ALORS la mise en forme conditionnelle recommence à zéro.

Je vous remercie énormément d'avance pour votre aide. Sincèrement si vous pouvez déjà me débloquer pour la première partie ça serait génial =)

Bonjour et bienvenue,

peux-tu mettre un fichier excel STP avec un jeu de données ? cela permettra aussi de voir comment sont structurées les informations

Bonjour Steelson,

Voici un exemple de données:

15test.xlsm (16.05 Ko)

Dans le fichier j'ai déjà effectué une petite modif au niveau des heures: l'heure (colonne A) s'affiche si et seulement si la cellule correspondante en B est un texte

Dans le fichier que j'ai uploadé, je voudrais donc faire en sorte que la ligne 13 soit en mise en forme conditionnelle (surlignage en jaune) puisque c'est la deuxième fois qu'il y a une corrélation entre B et C (première fois en ligne 7).

Je souhaiterais que la ligne 15 soit en rouge puisque c'est la troisième fois qu'il y a corrélation entre B et C (1e x ligne 7 et 2e x en ligne 13). Cependant comme en cellule correspondante en D il est écrit "P ", il faut que la mise en forme conditionnelle recommence à zéro c'est-à-dire qu'en ligne 17, il n'y ait pas de mise en forme conditionnelle. Si, par exemple, en ligne 24, l'occurrence T 27 réapparaît, il faudrait alors que la mise en forme conditionnelle réapparaisse (surlignage en jaune) puisque c'est la deuxième fois qu'il y aurait corrélation entre B et C depuis que D en ligne 17 = P

J'espère que je suis plus ou moins compréhensible =)

Un tout grand merci pour votre aide!

Bonjour, salut Steelson,

Si j'ai bien compris la demande, pas besoin de VBA pour cette MFC. Une formule personnalisée appliquée à la plage A7:D80 :

=NB.SI.ENS($B$7:$B7;"T";$C$7:$C7;$C7)>1

Le fichier modifié :

19test.xlsm (14.20 Ko)

Note : pour une alternance de couleur, on peut utiliser une MFC complémentaire avec la fonction MOD pour surligner en rouge les lignes en doublons pairs (doublon 2, 4, 6, etc).

Merci pour ta réponse.
Question idiote mais je ne comprends pas le rôle du $ et la seconde partie de la formule "$C$7:$C7;$C7)>1"
Peux-tu m'éclairer?

Merci :)

L'utilisation des $ sert à figer une partie de la référence, pour qu'elle n'évolue pas selon l'emplacement de la formule. Placé devant la lettre, on fige la colonne, placé devant le chiffre, on fige la ligne.

NB.SI.ENS donne le nombre de lignes qui respectent un ensemble de conditions, ici au nombre de 2 : porter la lettre "T" en colonne B, et ayant le même contenu en colonne C qu'une autre ligne. Le résultat de cette fonction est donc un nombre.

Une MFC applique la couleur dans le cas où la formule renvoie VRAI, donc ici ce qui nous intéresse c'est de savoir si plusieurs lignes sont concernées, c'est à dire que =NB.SI.ENS(...)>1 renvoie VRAI. A noter qu'un formule de MFC s'écrit pour le 1er cas de la plage où elle s'applique (ici la cellule A7).

N'ayant pas figé la 2ème référence de ligne de chaque plage (pas de $), la formule NB.SI.ENS va balayer toutes les lignes au dessus d'elle (c'est à dire de + en + à mesure que l'on descend dans le tableau). Ceci permet de ne pas appliquer la couleur sur le 1er doublon rencontré (puisque aucune ligne au dessus n'est identique).

... par contre cela risque d'être lourd si tu as une grosse base de données de plus de mille lignes. Dans ce cas, il faudrait voir une autre solution. Tout dépend aussi si tu vux être alerté ou pas au moment de la saisie.

Je pense aussi qu'il faudrait structurer cela en tableau excel.

Variante qui permet aussi de voir quelles lignes précédentes étaient concernées. J'ai choisi ici de mettre la formule dans le tableau (colonne qu'on peut masquer). Mais qui reste lourd aussi en cas de longue base de données.

11test.xlsm (16.92 Ko)

Version s'appuyant sur un TCD qui peut être moins chronophage !

bonjour Pedro ...

Merci @Pedro22 pour l'explication, je vais pouvoir utiliser ça plus tard dans d'autres formules.

@Steelson: la base de donnée sera toujours faible: si j'arrive à 80 lignes ça sera déjà beaucoup car la base de données sert pour des courtes périodes et à chaque nouvelle période on recommence à zéro, du coup chaque période à une feuille qui lui est dédiée.

Ici mon but est de répertorier et mettre en évidence la répétition de certaines données afin qu'elles soient clairement identifiables par autrui.

Merci pour tes variantes, je vais probablement l'utiliser car dans la base de données de base, je souhaiterais rajouter une quatrième colonne et rajouter une nouvelle condition pour que la mise en forme conditionnelle recommence à zéro si B = C >3 et D =P

Maintenant je ne suis pas sûre que le TCD me soit vraiment utile ici. Je vais tester un peu voir ce qui est le plus simple et approprié. Un grand merci pour tes réponses et tes exemples!

Je suis d'accord avec toi, oublie le TCD dans ce cas.

Rechercher des sujets similaires à "macro mise forme conditionnelle apparition colonnes"