Mise en Forme Conditionnelle trop longues

MAlain

XLDnaute Nouveau
Bonjour,

J'écris des mises en formes conditionnelles utilisant plusieurs fonctions imbriquées, des noms de plages de cellules se situant dans d'autres feuilles.
Tout se passe parfaitement malgré l'apparente complexité de ces formules à rallonge

Cependant, chaque condition de MEFC est limité à 256 caractères ce qui s'avère, dans mon besoin, insuffisant.

J'ai écrit une fonction qui reprend la condition trop longue de la mise en forme conditionnelle
Ainsi, je pensais m'affranchir de la longueur de la condition en notant dans la MEFC , EVALUATE("ma_fonction_longue"') .. , ma_fonction_longue étant dans un module et non dans la condition d ela box de la MFEC.
Et bien non, raté, l'astuce ainsi utilisée ne suffit pas : cela marche .. jusqu'à 256 caractères, mais pas au-delà !

Merci pour votre aide afin de débloquer ma situation .. et surtout mon esprit !

sincèrement,

Alain
 

Dranreb

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle trop longues

Bonjour.
Pas besoin de Evaluate. J'ai écrit cette fonction de test:
VB:
Function MeFCSpéc(Plg As Range) As Boolean
MeFCSpéc = Plg.Row Mod 2 = 0
End Function
En B2:B16 une MeFC avec la formule est :
Code:
=MefCspéc(B2)
Mis un fond rouge qui s'est bien retrouvé une ligne sur 2.
Cordialement.
 

MAlain

XLDnaute Nouveau
Re : Mise en Forme Conditionnelle trop longues

Bonsoir,

j'ai recopié scrupuleusement (??) votre proposition mais pour le coup, je n'obtiens rien !
voir mon fichier ci-joint avec votre proposition

...et ma pseudo solution qui focntionne ..

votre suggestion m'appporterait elle la solution pour incorporer, sans blocage, une condition pour la mis en forme conditionnelle qui dépasse 256 caractères ?

merci par avance pour votre avis complémentaire,

sincèrement,

Alain
 

Pièces jointes

  • essai_MEFC.xls
    25 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle trop longues

Je ne vois nulle part dans votre classeur joint ma Function MeFCSpéc ni dans Modue1 ni dans Module2.
votre suggestion m'appporterait elle la solution pour incorporer, sans blocage, une condition pour la mis en forme conditionnelle qui dépasse 256 caractères ?
Oui dans la mesure où vous n'auriez plus à la spécifier puisque vous la calculeriez dans la fonction juste en lui passant en paramètre les plages impliquées
 

MAlain

XLDnaute Nouveau
Re : Mise en Forme Conditionnelle trop longues

Bonjour,

toutes mes excuses : j'avais mis votre fonction dans mon autre classeur : erreur de débutant que je n'avais d'ailleurs jamais faite !
Fonction MeFCSpec mise dans mon classeur exemple : cela fonctionne parfaitement; vous avez raison; je n'en doutais pas ! ci-joint "mon" fichier exemple revu

J'ai ajouté , sous formes de plusieurs commentaires (sinon cela bloque votre fonction !??), dans le module 1, du fichier joint ma fonction "Compare_1 "telle qu'elle fonctionne en MEFC avec "EVALUATE" (mais qui bloque pour des questions de longueur),
et l'essai de transposition "Compare_2" selon votre suggestion : là, à la validation, apparaît "attente de fin d'instruction" devant "OR", et l'instruction se met en rouge !!....donc syntaxe incorrecte
j'ai essayé de mettre des guillements autour de ma formule, voire un "=" après le premier guillemet, cela ne fonctionne pas ... aussi simplement
J'ai aussi essayé sans succès de remplacer votre "Plg" par le nom de ma cellule "cellule" ( dont la valeur est prise en compte dans la mise en forme conditionnelle). (dans ma formule de mise en forme, tous les noms par abréviations sont des plages du classeur, et par ailleurs il y a les fonctions OR, AND, MATCH, INDEX, ...)

Merci pour cet ultime "orientation" pour écrire correctement ce type de fonction (je ne connais pas, vous vous en doutez les bases VBA concernant les fonctions, les objets_plages et autres principes d'écriture .....)

Dans l'attente impatiente de ce "détail", car votre assurance que je vais m'affranchir de la longueur dans la condition de la MEFC m'agrée au plus haut point

merci
sincèrement,

Alain
 

Pièces jointes

  • essai_MEFC (version 2).xls
    28 KB · Affichages: 27
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle trop longues

Bonjour.
Ne pourriez vous joindre plutôt un classeur reproduisant sur quelques lignes les colonnes impliquées dans le vrai problème ?
Il ne sera pas question d'utiliser Evauate dans la Function. Par contre il faudra lui passer en paramètres toute les plages impliquées dans le traitement sinon elle risquerait de ne pas être réévaluée si une plage non passée changeait.
 

MAlain

XLDnaute Nouveau
Re : Mise en Forme Conditionnelle trop longues

Re_bonjour,

voici une version 3 avec 2 feuilles ajoutées avec mon problème dans sa plus simple expression :
feuil1 : une plage de cellules "suivi" avec des qualifications A ou B
feuil2 : le suivi de dates; en rouge (MEFC) quand il exsite une qualification dans la case en correspondance dans le tableau des qualifications (feuil1); en gris quand on y met une date
Feuil1 : mise en forme conditionnelle pour visualiser si les dates mises en Feuil2 dans chaque case correspondante sont -en rouge (-60j), orange(-30j) ou vert(>30j) par rapport à la date du jour-

Bref, sur une feuille ou l'autre, j'ai laissé les MEFC dans l'outil des conditions

Si vous pouvez sur au moins une condition me montrer comment on transcrit cela en fonction, après avoir "déclarer" dans la fonction deux ou trois plages de cellule, notamment les plages relatives telles que nommées dans mon exemple : ex : "cellule" est la cellule où on se trouve quelque soit la feuille; "Clef_suivi" est la plage C5:C7 de la feuil1 quelque soit la cellule où on se trouve dans une autre feuille

merci beaucoup pour votre aide,

sincèrement,

Alain
 

Pièces jointes

  • essai_MEFC (version 3).xls
    35.5 KB · Affichages: 35

Dranreb

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle trop longues

Est-ce que les tableaux en Feuille1 et Feuil2 sont toujours de la même taille avec mêmes premières ligne et colonne ? Voire implantés au même endroit dans les deux feuille ? Parce qu'alors il n'y a pas lieu de faire des recherches de clés. Ça simplifierait tout et vous ne songeriez peut être même plus à écrire de fonction. Par ailleurs il n'y a pas besoin du nom "cellule": une adresse de cellule sans $ spécifiée pour la condition de la 1ère cellule (ou plus exactement de la cellule active de la plage) est appliquée de façon incrémentée sur toute la plage portant une même MeFC.
 
Dernière édition:

MAlain

XLDnaute Nouveau
Re : Mise en Forme Conditionnelle trop longues

En théorie, les tableaux ont la même structure et implantation
en théorie seulement, et c'est pourquoi je souhaite maintenir la recherche de clefs afin d'éviter toute erreur de référence si l'ordre de mes colonnes ou lignes changent

concernant la "cellule" à laquelle la MEFC s'applique, dans la mise en forme conditionnelle classique, effectivement, je n'en ai pas besoin et il suffit de mettre l'adresse de la cellule sans $, mais comment y faire référence dans la formule insérée dans une fonction sans la nommer ? la condition à vérifier compare aussi la valeur de la cellule proprement dite .

Enfin, l'enchevêtrement de mes calculs des conditions à vérifier implique beaucoup plus de fonctions et calculs que je n'en ai mis dans le fichier exemple : en réduisant au max l enom des plages relatives, l'imbrication des fonctions, ...etc...; im m'arrive de dépasser les 256 caractères ...
la voie ouverte par l'utilisation détournée d'une fonction, avec déclaration des variables (?) ou plages de cellules est vraiemenvt la voie qu'il me conviendrait ...: vous m'vez mis l'eau à la bouche ...
merci par avance si vous pouvez m'y guider ....

sincèrement,

Alain
 

Dranreb

XLDnaute Barbatruc
Re : Mise en Forme Conditionnelle trop longues

Bon écoutez j'en ai marre, je n'arriver pas à le mettre au point, je m'y perd complètement tout le temps avec les notion de suivi et de qualif et lequel a les A et le B lequel a les dates avec Feuil1 et Feuil2 au lieu que ce soit clair. J'en ai marre j'arrête.
S'l faut faire des INDEX EQUIV c'est dans ce style
VB:
Function SuiviRouge(ByVal Cel As Range, ByVal LeSuivi As Range, ByVal LesDates As Range, ByVal Auj As Date) As Boolean
Dim Ls As Long, Cs As Long, Ld As Long, Cd As Long
Ls = Cel.Row - LeSuivi.Row + 1: Ld = worsheetfunction.Match(LeSuivi(Ls, 1).Value, LesDates.Columns(1), 0)
Cs = Cel.Column - LeSuivi.Column + 1: Cd = WorksheetFunction.Match(LeSuivi(1, Cs).Value, LesDates.Rows(1), 0)
SuiviRouge = Cel.Value <> "" And LesDates(Ld, Cd).Value < Auj - 60
End Function
 
Dernière édition:

MAlain

XLDnaute Nouveau
Re : Mise en Forme Conditionnelle trop longues

Ne vous énervez pas !
désolé !!
je vais regardez votre propositon et je vous tiens au courant

je vais essayer de me repérer dans toutes ces déclarations ...
je vais essayer de ne pas m'énerver !?!!

merci

Alain
 

Discussions similaires

Statistiques des forums

Discussions
312 609
Messages
2 090 197
Membres
104 449
dernier inscrit
Miguel937