Masquer/démasquer colonnes fonction d'une date et MFC

Bonjour,

Je travaille sur un tableau de suivi d'objectifs annuels. Pour cela, j'ai créé un planning (qui ressemble peu ou prou à un diagramme de Gantt) via Excel. Si j'arrive enfin au résultat obtenu, me reste deux volontés qui, pour l'heure, se heurtent à mon manque de maîtrise fine de l'outil.

J'explique donc mes deux desideratas :

- Sur la partie "planning", qui se trouve à droite des phases de projet (à partir de la colonne V dans le document), je souhaiterais réussir à mettre en forme l'ensemble de la colonne pour laquelle la cellule de la première ligne est égale à aujourd'hui. Les MFC ne m'ont pas permis (sauf à ce que je ne les ai pas utilisées correctement) d'aboutir au résultat souhaité. J'imagine qu'il me faudrait donc passer par une macro et, pour autant, je n'ai absolument aucune idée du bout par lequel prendre ce sujet...

- La seconde ambition est de ne pas "polluer" la vision des utilisateurs avec trop de données. En somme, j'aimerais, par un système de case à cocher, pouvoir masquer/démasquer les colonnes n'appartenant pas à un intervalle [(Aujourd'hui-15 jours)-->(Aujourd'hui+6mois)]. Là encore, le plus intuitif me semblerait la macro, et, si je vois à peu près comment masquer une colonne via une macro, je ne vois pas comment la masquer sous la condition d'appartenir à cet intervalle.

Je m'en remets donc à des cerveaux bien plus aguerris que le mien en la matière, espérant que mes demandes ne relèvent ni de l'illusoire, ni du n'importe quoi.

En vous remerciant sincèrement,

Zabko

Bonsoir,

pour le 1) :

Sélectionnez la cellule V1, "lancez" les MFC, et modifiez la règle de mise en couleur de Aujourdhui() par ceci :

mfc

sélectionnez la dernière possibilité " utilisez une formule..."

Entrez la formule : =ET(V$1=AUJOURDHUI())

faites OK

ensuite dans la "fenêtre" s'applique à mettez : =$V$1:$UY$45

où le 45 correspond à la dernière ligne de votre tableau.

Mais ce n'est pas tout ! Car là ça ne marche pas encore car cette règle est "placée" en dernière position au niveau de la feuille, elle devient donc transparente pour les cellules qui réagissent avec une autre MFC...

Donc dans la fenêtre de gestion de MFC, en haut dans la liste de choix, au lieu de "pour cette cellule" sélectionnez "sur cette feuille"

et vous allez voir que la MFC d'aujourd'hui est tout en bas de la liste, il suffit alors de cliquer dessus et avec les boutons "flèche vers le haut" et "vers le bas" de la déplacer en haut de la liste, elle sera donc testée et mise en place en premier...

Voilà, pour moi (et peut-être vous) le 1) est résolu...

@ bientôt

LouReeD

pour le 2)

l'idée pourrait être :

masquer toutes les colonnes et afficher les colonnes aujourd'hui -15 à aujourd'hui + 180

Reste plus qu'à trouver la colonne "aujourd'hui", et FIND va nous permettre de le faire en renvoyant un objet "RANGE" du coup il sera facile de trouver le numéro de colonne de aujourd'hui - 15 car si on a "aujourd'hui" en RANGE on connaît le numéro de colonne avec .Column

Une fois qu'on a le premier numéro de colonne et le dernier il suffit de sélectionner la zone en ligne 1 et de faire ENTIRECOLUMN.HIDDEN = TRUE

Le tout écrit dans un VBA parfait !

Find fonctionne sur des cellules "visibles" donc le déroulement du code :

on arrête la mise à jour de l'écran pour éviter le "scintillement"

on montre toutes les colonnes

on cherche la colonne aujourd'hui avec FIND

on calcule alors la première et la dernière colonne

on masque toutes les colonnes

on affiche les colonnes de la zone

ou bien on remplace les deux dernières lignes par :

on masque de V à la première colonne -1

on masque de la dernière colonne + 1 à UY

C'est une affaire de goût, pour le choix.

@ bientôt

LouReeD

Bonsoir,

ci joint le fichier avec le code écrit en VBA :

@ bientôt

LouReeD

Merci beaucoup ! Tout devient tellement plus simple, quand on lit une telle maîtrise de l'outil !

Je n'avais pas notion de cet ordonnancement des MFC : ça va tellement me faciliter la vie à l'avenir de le savoir !

Je fais les tests, et je bascule en résolu dès que ça fonctionne !

Merci encore pour le temps que vous aurez passé à m'aider, je vous tiens au courant au plus vite !

Zabko

Bonsoir,

je n'ai pas vu quand le message est passé en résolu....

Merci de vos remerciements !

Attention peut-être une erreur de fonctionnement si le "aujourd'hui" correspond à une date inférieure à :

au premier jour du calendrier !!!! ou supérieur à :

dernier jour du calendrier - 180 jours !!!

Dans le code il faudrait mettre des "butées" pour un fonctionnement "sans erreur"

@ bientôt

LouReeD

Rechercher des sujets similaires à "masquer demasquer colonnes fonction date mfc"