XL 2019 Macro d'activation de mise en forme conditionnelle "glissante"

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Flomax

XLDnaute Nouveau
Bonjour,

J'ai développé un fichier pour gérer les compétences et polyvalences qui plait bien et qui est visuel, mais malheureusement la mise en forme conditionnelle ralenti énormément sa mise à jour.

N'étant pas expert en macro (je sais juste changer des paramètres dedans, ou une ou deux bidouilles) :

- sauriez-vous faire une macro de mise en forme conditionnelle qui reprend celle créée manuellement ci-dessous ? :

ET((SI(NB.SI('BDD Fiches de formation'!$E:$E;CONCAT(F$1;$A6))>0;1;0)+SI(NB.SI('BDD Fiches de formation'!$E:$E;CONCAT(F$2;$A6))>0;1;0)+SI(NB.SI('BDD Fiches de formation'!$E:$E;CONCAT(F$3;$A6))>0;1;0)+SI(NB.SI('BDD Fiches de formation'!$E:$E;CONCAT(F$4;$A6))>0;1;0))<NBVAL(#REF!);F6<>"")

Cette mise en forme est appliquée de la case F6 à I9, créée sur la case F6 puis étendue sur les autres, donc la colonne analysée pour la MFC évolue selon la colonne de la case concernée.

J'ai cherché sur internet mais je n'ai pas trouvé d'exemple que je pourrais reporter sur mon cas.

J'ai mis en pièce jointe une version "générique" du fichier d'origine. L'originale contient beaucoup plus de colonnes et de lignes (de L5 à PV79 actuellement), qui fait qu'après une saisie de case on attend 10 à 20s pour que le calcule se fasse, ce qui n'est pas le cas dans cette version.

Au plaisir de vous entendre,

Flomax
 

Pièces jointes

Solution
Bonjour,

Avec un peu de délai, je reviens sur le sujet ! La mise en forme de Gégé était pas mal mais ça ne me surlignait pas les bonnes cases. Comme j'avais d'autres sujets plus prioritaires sur le sujet, je ne m'étais pas penché dessus, jusqu'à hier ! Du coup j'ai trouvé le problème, qui était sur la formule principale. Voici donc la version qui fonctionne impeccablement :
VB:
Sub Coloriage()
Dim objCollabos As Object, Col1 As Range, ChampCible As Range, NbLignes As Long, NbColonnes As Long, i%, j%, wkCollabos As Worksheet, wkProd As Worksheet, Combo1$, Combo2$, Combo3$, Combo4$
    Set wkCollabos = ThisWorkbook.Worksheets("BDD Fiches de Formation")
    Set objCollabos = wkCollabos.ListObjects("_Collaborateurs")
    Set wkProd =...
Bonjour,

Cette mise en forme est appliquée de la case F6 à I9, créée sur la case F6 puis étendue sur les autres, donc la colonne analysée pour la MFC évolue selon la colonne de la case concernée.
C'est-à-dire ???
Comment étends-tu cette MFC ?

As-tu vérifié le nombre de MFC de ta feuille ?

Ne peux-tu réduire la plage $E:$E (car ça, ça ralenti énormément les MFC) ???

Utilises-tu un tableau structuré ?
Ça permet de réduire la plage d'action des MFC au strict nécessaire. 😉
 
Dernière édition:
Je la crée sur la première case, et après j'applique la mise en forme à l'ensemble des cases concernées avec le "carré noir" en bas à droite de la case. Ce qui veut dire que la mise en forme conditionnelle :

- Pour F6 : regarde le nombre de cases non vides parmi F1, F2, F3 et F4, et regarde si le document attaché à la case F1, F2, F3 et F4, associé au nom de la personne dans la case A6, apparait dans la colonne E de la base de données de la fiche de formation
- Pour F7 : F1, F2, F3 et F4 en fonction de A7
- Pour F8, F9, etc : F1, F2, F3 et F4 en fonction de respectivement A8, A9, etc
- Pour G6 : G1, G2, G3 et G4 en fonction de A6
- Pour G7 : G1, G2, G3 et G4 en fonction de A7
- Pour H9 : H1, H2, H3 et H4 en fonction de H9

Et ainsi de suite
 
Bonjour,


C'est-à-dire ???
Comment étends-tu cette MFC ?

As-tu vérifié le nombre de MFC de ta feuille ?

Ne peux-tu réduire la plage $E:$E (car ça, ça ralenti énormément les MFC) ???

Utilises-tu un tableau structuré ?
Ça permet de réduire la plage d'action des MFC au strict nécessaire. 😉
J'ai testé en limitant la plage E:E au données réelles, soit 2531 lignes, et ça ne change pas grand chose.

Ci-dessous les mises en forme que j'ai (j'ai depuis rajouté 9 colonnes)

1669895414136.png

Le tableau est bien structuré à première vue, j'ai justement essayé d'optimiser la chose
 
La MFC de ton fichier de #1 n'est pas bonne : elle colore des cellules qu'elle ne devrait pas colorer.

Essaye ceci :
Code:
=(F6<>"")*(NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$1&$A6)+NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$2&$A6)+NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$3&$A6)+NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$4&$A6))
 
Dernière édition:
La MFC de ton fichier de #1 n'est pas bonne : elle colore des cellules qu'elle ne devrait pas colorer.

Essaye ceci :
Code:
=(F6<>"")*( NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$1&$A6) + NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$2&$A6) + NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$3&$A6) + NB.SI(INDIRECT("_Collaborateurs[Colonne1]");F$4&$A6))
Merci TooFatBoy. En effet, en faisait la version light de mon fichier de base, en créant des lignes factices, la formule n'est pas bonne. Dans l'original par contre tout est bon
 
Salut camarade Gégé 😉

Je crois qu'une macro travaille beaucoup moins vite qu'une MFC. Donc, perso, je préfère les MFC.
Mais peut-être me trompé-je... 🤔
Certes, mais la macro ne prendrait du temps qu'au chargement de la page, ensuite les mises à jour sur l'événement Change seraient instantanées (puisqu'elles ne seraient appliquées que sur les cellules modifiées), non ? ... sauf si les événements déclencheurs ont lieu dans la feuille 'BDD Fiches de formation' et non dans la feuille 'MdP', ce que nous ignorons.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
63
Réponses
6
Affichages
102
Réponses
8
Affichages
97
Retour