Base de données - mise en forme conditionnelle / lignes masquées

Bonjour,

Dans une base de données jointe (simplifiée), j'aimerai colorer le libellé de colonne "DOSSIER" (cellule B1) si une valeur du genre "A FAIRE" est détectée dans la dite colonne ; c'est ce que j'ai fait dans le fichier test joint, en intégrant une mise en forme conditionnelle dans la cellule B1 : =SI((GAUCHE(B2;2)="A ");VRAI;FAUX) s'appliquant à la colonne.

Par contre, si je filtre ma base de données, en choisissant par exemple par exemple "MONSIEUR C" dans la colonne "NOM", je souhaiterai que le libellé "DOSSIER" revienne à sa couleur blanche. Je n'y parviens pas, la formule de la mise en forme conditionnelle tenant compte des lignes masquées via le filtre

En d'autres termes, je souhaiterai que la condition mentionnée dans la mise en forme conditionnelle tienne compte des filtres choisis et ce :

- sans macro ni via

- sans bricolage du genre ajouter des colonnes... et utiliser la fonction sous.total qui à ma connaissance est la seule qui tienne compte des filtres.

Help !

Merci d'avance,

12test.xlsx (12.65 Ko)

Philippe

Bonsoir,

En retour le fichier avec les MFC modifiées.
Il faudrait se pencher sur l'utilité du $ dans Excel et sur comment fonctionnent les mise en forme conditionnelles pour être moins embêté.

Pour info :

=TROUVE("A";$B2;1)>=1

s'applique à : =$B$2:$B$5

=GAUCHE($B2;3)="EN "

s'applique à : =$B$2:$B$5

9test.xlsx (11.99 Ko)

Bonsoir,

pour reprendre une réponse d'un grand du forum (MFerrand) :

"Il n'y a aucun lien de dépendance entre filtre et MFC, ni dans un sens ni dans l'autre.
Dans ce sens, une MFC qui ne s'appliquerait qu'aux cellules filtrées est une impossibilité."

Ceci veut dire que B1 sera coloré s'il y a une donnée commençant par "a" dans sa colonne, que cette colonne soit filtrée ou pas.

@ bientôt

LouReeD

3test.xlsx (12.54 Ko)

Bonsoir,

A l'attention de JOYEUXNOEL

Merci pour la réponse, mais les cellules de la base de données ne sont pas un souci ; la problématique ne réside pas dans les cellules, mais au niveau du libellé même "DOSSIER" que je souhaiterai voir rouge si les données filtrées permettent de visualiser des lignes "A INTRODUIRE", et blanc, si les données filtrées ne mentionnent pas de ligne "A INTRODUIRE".

Pour l'instant, dans mon fichier test original, le libellé "DOSSIER" (je l'ai joint à nouveau dans une version simplifiée) reste rouge même si les données filtrées ne laissent pas apparaitre de dossier "A INTRODUIRE".

A l'attention de LOUREED

Dommage, je pensais qu'impossible n'était pas Excel.

Wow, j'étais loin d 'avoir compris cela ... Et les formules de MFC avaient tellement de problèmes en tous genres que je pensais avoir compris la demande.

Dès lors, se pose la question : Pourquoi chercher une solution en excluant à priori les outils qui permettraient de la mettre en oeuvre ?

- sans macro ni via

- sans bricolage du genre ajouter des colonnes... et utiliser la fonction sous.total qui à ma connaissance est la seule qui tienne compte des filtres.

Attention !

Vous avez mis pas mal de restrictions dans votre demande !
Amputez vous de vos jambes et essayer de battre le record du monde du 100 m !
Vous supprimez VBA de votre demande, pourquoi pas, mais en plus vous supprimez le fait de faire des éventuels calculs intermédiaires pour compenser...

@ bientôt

LouReeD

Merci pour vos réponses

Si l"on ouvre le champs des possibilités, quelle serait la solution la plus simple sachant que mon fichier test ne comprend qu'une colonne, mais que le fichier complet comprend une vingtaine de colonne ? J'ai actualisé mon fichier test en y ajoutant une colonne supplémentaire pour l'exercice.

Merci d'avance

3test.xlsx (12.57 Ko)

Bonjour,

le plus simple serait de mettre une touche de VBA, donc de passer de xlsX en xlsM, reste à savoir si de votre coté cela est "autorisé" sur les système d'exploitation utilisés.

@ bientôt

LouReeD

Voici un exemple :

7test-3.xlsm (24.83 Ko)

Il y a deux données sur la feuille une avec la formule Alea() qui va, au changement de "structure" de la feuille suite au filtrage ou défiltrage du tableau, lancer la fonction Calculate d'Excel. Cette fonction est interceptée par le code VBA qui va alors lancer la fonction personnalisée qui teste si le tableau est filtré ou pas, en fonction du résultat, l" "nom" Excel UnFlitre va passer en Vrai ou Faux.
Du coup au niveau de la MFC, il a suffit d'ajouter la condition de valeur de ce nom : non filtré, alors Vert en fonction des données, filtré, alors cela revient en bleu.
Je n'arrive pas à supprimer la cellule avec la formule Alea()...

@ bientôt

LouReeD

Je pense que je vais finalement choisir la solution "bricolage". J'ai ajouté des colonnes avec des conditions, qui me permettent d'utiliser la fonction sous total. Le résultat de cette fonction sera alors interprété dans la mise en forme conditionnelle. J'ai joins le fichier, avec deux colonnes qui sont masqués. Merci à tous. Bonne journée, Philippe

7test.xlsx (13.11 Ko)

En effet, j'étais également partis là dessus, sous total travaillant avec les lignes visible, cela déclenche également la fonction calculate... Mais plus besoin de l'intercepter avec du VBA, il suffit d'avoir une cellule qui soit surveillée afin de faire évoluer les conditions de la MFC.

Par contre, si vous filtrez sur une donnée de personne qui a un "A" en colonne B et rien en colonne C, la colonne C revient en couleur "blanc" mais pas la colonne B...
Je pensez que tout devait revenir en blanc lors du filtre...
Avec le VBA vous n'avez qu'une cellule "hors champ" or ici vous aurez autant de colonne que de surveillance... Ce que je ne vous ai pas dis, mais peut-être l'avez vous vu, votre plage de données sur mon fichier a été transformée en tableau structuré sous Excel par l'outil insertion tableau.

@ bientôt

LouReeD

Bonjour,

Pouvez-vous essayer en tapant :

=NB.SI($B$2:$B$5;"A FAIRE")>0

s'appliquant à $B$1.

Cdlt,

Bonsoir 3GB,

je pense que cela ne marchera pas car la fonction ne fait pas de différence entre les lignes masquées et visible, donc filtre ou pas filtre le résultat sera le même...
Mais attendons de voir le résultat du test.

@ bientôt

LouReeD

Bonsoir LouReed,

Oui, vous avez raison, je n'ai pas vraiment fait attention à la question du filtre.

Alors, j'ai une autre proposition mais je n'ai aucune idée du résultat, ce serait :

=ET( NB.SI($B$2:$B$5;"A FAIRE")>0 ; SOUS.TOTAL(103;$B$2:$B$5) = NBVAL($B$2:$B$5) )

En supposant idéalement que cette colonne B ne contiendra que du texte et pas de cellules vides.

Et bien, je viens de me rendre compte que j'apprécie cette fonction Sous.Total !
je ne la voyais que sur un tableau, maintenant je sais qu'elle existe en fonction !
Après un test (ou deux), cela fonctionne même avec des cellules vides, par contre si on sélectionne le nom d'une personne avec un "A" en colonne B, lors du filtre la cellule B1 reste "rouge", mais dans les autres cas elle passe au bleu !

Autant cette dernière solution correspondra à ce que veut Philippe V.. (oui un double point le premier étant celui du pseudo).
Voilà une solution sans VBA et sans artifice qui confirme ce qu'il disait "Si c'est impossible ce n'est pas Excel !"

@ bientôt

LouReeD

Rechercher des sujets similaires à "base donnees mise forme conditionnelle lignes masquees"