XL 2016 Passer d'une MFC à une macro pour supprimer le bazar dans les règles.

Al1_44

XLDnaute Junior
Bonjour le forum,

Sur un précédent post, je souhaitais indiquer en vert le besoin effectif par rapport au stock.
Exemple : en colonne B, si je prend le code 21, il m'en faut 12 (Feuille 1), il y en a 5 en stock (sur la feuille 2 ).
Grace à une solution proposée par job75, une MFC vient calculer le besoin par rapport au stock et
met en vert ce qui est disponible et en jaune le manquant.
Mon problème, c'est que je viens régulièrement faire des couper/coller et supprimer des lignes ce qui augmente d'autant
le nombre de règles dans la MFC et scinde la plage de recherche dans "s'applique à".
Hormis le fait de venir régulièrement corriger les données dans la MFC, quelle serait la solution la plus "simple" ?
Passer par une macro pour effectuer le calcul ?
Pour le coup je ne suis pas suffisamment au point pour réaliser la macro.

Al1_44
 

Pièces jointes

  • Besoin - Stock.xlsx
    18.8 KB · Affichages: 12
Solution
Après tu n'es pas obligé d'utiliser des MFC pour colorer conditionnellement tes cellules.
Une formule suffit... Enfin à condition d'utiliser une de ces fonctions personnalisées de l'espace:
Tu peux placer tes formules de colorisation en colonnes dans le TS pour être sûr de rester cohérent et si tu n'aimes les voir, tu peux toujours les masquer. Le TS saura en gérer la duplication automatique.

Même fichier que ci-dessus mais sans MFC.

Dudu2

XLDnaute Barbatruc
@Al1_44,
Ca m'a l'air très intéressant, il va me falloir du temps pour digérer ton code.
Pourquoi voudrais-tu "digérer un code".
Quand quelqu'un fournit une fonction personnalisée, il décrit ce qu'elle fait et donne un exemple qu'il suffit de reproduire. Tu n'as pas à faire d'investigations et essayer de comprendre du code. A moins que ce ne soit la compréhension de l'utilisation de la fonction personnalisée à laquelle tu fais référence.

D'autre part je pense que @TooFatBoy a raison.
Pour tes suppressions / insertions, tu le fais probablement directement sur des lignes entières au lieu de cliquer droit dans le TS pour utiliser le menu contextuel et les appliquer uniquement sur le TS.
Edit: Alors j'avoue qu'un couper / insérer dans un TS n'est pas simple car il faut procéder en 4 temps au lieu de 2. D'abord insérer une ligne vide, puis copier ou couper les valeurs, puis les coller dans la ligne vide et enfin supprimer la ligne d'origine.
 
Dernière édition:

Al1_44

XLDnaute Junior
Bonjour à tous,
Après une grosse semaine de vacances et un surcroit de travail au retour, me voici.
Pendant cette absence j'ai quand même fais quelque tests, et la solution qui me va le mieux est celle de Dudu2.
Une solution "clé en main", même si je ne comprend pas tout dans le code VBA.
Une chose aussi que je commence à intégrer c'est que l'on ne travaille pas de la même façon sur un tableau "normal" que sur un TS et qu'il va falloir me débarrasser de "mauvaises" habitudes.

En tout cas merci à vous tous.

Une dernière question, il y a dans le code de Dudu2 : HEXDEC("FFFF00") pour la couleur bleu clair, et dans la palette HEX("FFF00") est du jaune, est-ce qu'il existe une formule pour faire correspondre le code couleur HEX vers HEXDEC?
 

Dudu2

XLDnaute Barbatruc
Bonjour,
J'ai mis du HEXDEC simplement pour faire apparaitre les 3 octets du RGB en hexa (2 car hexa par octet).
Mais la fonction attend un Long pour les couleurs ce que HEXDEC fournit au final.
Donc passe un Long de Color que tu trouveras avec cet utilitaire... amélioré au post suivant.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
J'ai mis du HEXDEC simplement pour faire apparaitre les 3 octets du RGB en hexa
C'est plutôt du BGR dans ce cas-là. 😅


Toute cette usine à gaz alors qu'une simple MFC standard suffit...
Je vois que ça utilise des DLL. Du coup est-ce que ça fonctionner quand même sous Mac ? 🤔

Et encore, on a échappé aux modules de classe !
Mais en cherchant bien on doit pouvoir en ajouter deux ou trois quelque part. 🤣
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Salut @TooFatBoy,
Les MFC, sauf en usage limité, c'est déjà une usine à gaz avec en plus de tuyaux qui fuient de tous les cotés.
Et une fois dispersées, on ne peut plus rien en faire. Faut tout recommencer. Tu parles d'une affaire !

Ces fonctions personnalisées sont certes une hérésie Excellienne :eek: et une originalité mondiale 🤓 mais je les aime bien (normal, c'est moi qui) et elles peuvent trouver un usage, la preuve, fut-ce uniquement sur Windows.
 

Al1_44

XLDnaute Junior
Salut @TooFatBoy,
Les MFC, sauf en usage limité, c'est déjà une usine à gaz avec en plus de tuyaux qui fuient de tous les cotés.
Et une fois dispersées, on ne peut plus rien en faire. Faut tout recommencer. Tu parles d'une affaire !

Ces fonctions personnalisées sont certes une hérésie Excellienne :eek: et une originalité mondiale 🤓 mais je les aime bien (normal, c'est moi qui) et elles peuvent trouver un usage, la preuve, fut-ce uniquement sur Windows.
Bonjour Dudu2,

Moi aussi j'aime bien ces fonctions personnalisées, même s'il n'y a plus la fonction undo, je ferais avec ou sans...
Par contre j'ai une question, sur quelles lignes de codes agir pour remettre les cellules en "sans remplissage" lorsque les valeurs en colonnes 6 sont supprimées et que la cellule en colonne 7 est en rouge.
Exemple, si je supprime Toto en G10, H10 reste en rouge.
 

Pièces jointes

  • Sans MFC-dans-TS-v2.xlsm
    26.4 KB · Affichages: 1

TooFatBoy

XLDnaute Barbatruc
Moi aussi j'aime bien ces fonctions personnalisées, même s'il n'y a plus la fonction undo, je ferais avec ou sans...
Par contre j'ai une question, sur quelles lignes de codes agir pour remettre les cellules en "sans remplissage" lorsque les valeurs en colonnes 6 sont supprimées et que la cellule en colonne 7 est en rouge.
Exemple, si je supprime Toto en G10, H10 reste en rouge.
Oserais-je dire qu'avec une MFC la question ne se poserait même pas puisque ça le ferait tout seul, et toujours sans la moindre ligne de code VBA ?
Ben non, je n'oserais pas. 😅


Bon week-end ensoleillé
🖖
 

Al1_44

XLDnaute Junior
Oserais-je dire qu'avec une MFC la question ne se poserait même pas puisque ça le ferait tout seul, et toujours sans la moindre ligne de code VBA ?
Ben non, je n'oserais pas. 😅


Bon week-end ensoleillé
🖖
Effectivement, La MFC a du bon, mais je travaille sur un fichier type planning où je suis sans cesse en train de faire du copier/coller, d'insérer des lignes, d'en effacer. Ca me met le bazar dans les MFC, et il faut fréquemment nettoyer les plages et les doublons de MFC. Les fonctions de Dudu2 me satisfont même avec le retrait de l'undo. Tout ça pour dire qu'une fois que l'on trouve une solution qui convienne, j'ai du mal à voir autre chose.
PS: je regarde aussi le fichier de Crocroco, qui peut être une solution alternative, mais bon j'ai pas encore tout saisi pour l'intégrer à mon fichier.

bon week-end, ensoleillé ... en tout cas, pas par chez moi.
 

TooFatBoy

XLDnaute Barbatruc
Effectivement, La MFC a du bon, mais je travaille sur un fichier type planning où je suis sans cesse en train de faire du copier/coller, d'insérer des lignes, d'en effacer. Ca me met le bazar dans les MFC, et il faut fréquemment nettoyer les plages et les doublons de MFC.
C'est pour ça que je t'ai donné un exemple dans lequel tu n'as pas ces problèmes-là puisqu'il utilise un TS.
Mais je crois que j'ai compris que tu préfères utiliser du VBA, des macros et des fonctions pour faire ça. 😉


Bon week-end non ensoleillé
Effectivement, le soleil s'est transformé en brouillard à couper au couteau... 🫤
Tschüss
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 898
Messages
2 114 011
Membres
112 074
dernier inscrit
Belu81