Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

  • 20221121-mdp-pour-macro-mise-en-forme-conditionnelle.xlsm
    60.4 KB · Affichages: 11
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 =...

TooFatBoy

XLDnaute Barbatruc
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:

Flomax

XLDnaute Nouveau
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
 

Flomax

XLDnaute Nouveau
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)


Le tableau est bien structuré à première vue, j'ai justement essayé d'optimiser la chose
 

TooFatBoy

XLDnaute Barbatruc
Je viens d'ouvrir ton fichier, et effectivement tu utilises des tableaux structurés, donc aucune raison de mettre la MFC sur toute une colonne de la feuille.
Sur une colonne du tableau, oui.
Sur une colonne de la feuille : non.
 

TooFatBoy

XLDnaute Barbatruc
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:

Gégé-45550

XLDnaute Accro
Bonjour Flomax, TooFatBoy, le fil
à l'attention de TooFatBoy : une macro qui peindrait les "bonnes" cellules avec la "bonne" couleur sur l'activation de la feuille et une autre qui ferait la même chose sur l'événement Change des "bonnes" cellules ne seraient-elles pas une bonne solution pour accélérer le rendu ? Qu'en penses-tu ?
Amicalement,
 

Flomax

XLDnaute Nouveau
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
 

Gégé-45550

XLDnaute Accro
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:

TooFatBoy

XLDnaute Barbatruc
@Flomax :

As-tu essayé de supprimer la forme matricielle (qui ne sert à rien, à mon avis) des formules dans les cellules C2 et B3 de la feuille "MdP" ?

As-tu aussi essayé de supprimer ces deux formules, juste pour voir si ça change quelque chose ?
 

Flomax

XLDnaute Nouveau
Ci-joint l'original avec toutes les lignes, j'ai juste changé les noms des doc par principe de confidentialité, mais tout y est.
 

Pièces jointes

  • Excel download_Matrice de polyvalence Production.zip
    657.2 KB · Affichages: 7
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…