RESOLU: MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

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 !

vgendron

XLDnaute Barbatruc
Bonjour à vous,

Je reviens avec mon pb originel de MFC.. j'aime pas rester sur un échec...

Ce que je veux faire:
En VBA, créér une règle de MFC avec une formule qui utilise une fonction personnelle.
le but final est: lorsque le filtre automatique d'excel est activé, je veux colorer en rouge ce fameux filtre pour avoir une meilleure visibilité que la petite icone d'excel..

la fonction personnelle s'appelle Champactif()
elle renvoie vrai ou faux selon que le filtre automatique d'une cellule est activé

ci joint mon petit fichier exemple:
- si vous regardez les règles de MFC, elles sont..preques "identiques"
* la première sur les colonnes B et C a été saisie manuellement sans passer par VBA:
comme elle fonctionne parfaitement: l'utilisation de la fonction personnelle dans la MFC marche parfaitement.

* pour la seconde:
j'ai d'abord enregistré exactement ce que je viens de faire pour la première.. mais sur les colonnes D et E
à la fin de l'enregistrement de cette macro, je teste la MFC et ca marche !
maintenant, pour tester la macro; j'efface la seconde règle
puis je lance la macro:
je m'attend à ce qu'elle recréée la règle telle que souhaitée MAIS l'incompréhensible arrive:
la règle est bien créée.. sans la partie. mise en forme..

quelqu'un saurait il m'aider?
 

Pièces jointes

Dernière édition:
Re : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

Bonjour à tous,

Je pense que cela fonctionnera si tu décoches "Interrompre si Vrai".

Capture_1.jpg

A + à tous
 

Pièces jointes

  • Capture_1.jpg
    Capture_1.jpg
    30.7 KB · Affichages: 97
  • Capture_1.jpg
    Capture_1.jpg
    30.7 KB · Affichages: 95
Re : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

Bonjour à tous


vgendron:
Ah n'est pas le grand JB qui veut 😉
Pourquoi ne pas lui demander de l'aide justement à JB ? (La MFC fonctionne sur son site pourtant)

PS: Bonjour JCGL
 
Re : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

salut
JCGL apparemment. c'est pas ca.. meme si dans la macro je mets le StopIftrue à False. ca ne change rien
d'ailleurs. en manuel. quand on créé la règle. il est à true par défaut..
Staple: JB. c'est Boisgontier?
je lui ai déjà demandé en MP il y a quelque temps, mais je pense qu'il croule sous les demandes: les rancons du succès ;-)
et je pense avoir épluché son site justement. mais .. sans succès..
et pour préciser:
la fonction champactif marche effectivement très bien dans une MFC.. mais lorsque la règle est créée à la main.
ca ne fonctionne plus lorsque c'est une macro qui créé la règle..
mais je pense qu'il y a forcément quelque chose qui empeche la macro de créér la règle jusqu'au bout....
je creuse. je creuse.. mais à force. je vais me retrouver à l'autre bout de la terre.. . M.. j'y suis déjà ;-)
 
Re : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

RE


JB finira par venir dans ton fil vgendron ( en tout cas les statistiques le prédisent peu ou prou 😉 )

PS: Tu as bien laissé Application.Volatile dans la fonction?
(Je n'ai pas encore ouvert ta PJ, j'ai pas fini mon petit dej et suis pas encore bien réveillé)

Staple: JB. c'est Boisgontier?
Oui et sur XLD beaucoup le nomment JB (ce qui est logique JB= Jacques Boisgontier)
 
Re : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

;-) Bon ptit dej alors ;-)
et oui. elle est bien volatile .. et je me dis que peut etre.. justement. elle l'est tellement que la fonction est évaluée avant meme que le MFC applique le fond rouge...
 
RESOLU : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

Yeahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!
LA ligne qu'il manquait !!

Application.ScreenUpdating = False

Vous allez peut etre vous demander pourquoi. mais MERCI !!
Si si..grace à vous, je me suis posé LA bonne question..

et du coup.. sujet résolu et je joins le fichier.. ca peut servir
 

Pièces jointes

Re : RESOLU : MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

Bonjour vgendron,

Yeahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!
LA ligne qu'il manquait !!

Application.ScreenUpdating = False

J'avais trouvé un palliatif (qui ne me plaisait guère) mais je cherchais la raison du bon fonctionnement. Ta remarque explique, je pense, pourquoi le palliatif fonctionne. Le délai d'une seconde permet le calcul des fonctions champactif() qui avec toi est inhibé par le Application.ScreenUpdating

le code du palliatif:
VB:
Sub MFC_Formule_Puis_Format()
   Application.OnTime Now + TimeValue("00:00:01"), "MEF_Format"
   With Range("b4:E4")
      .FormatConditions.Delete
      .FormatConditions.Add Type:=xlExpression, Formula1:="=champactif(b4)"
   End With
End Sub

Sub MEF_Format()
   With Range("b4:E4").FormatConditions(1).Interior
      .PatternColorIndex = xlAutomatic
      .Color = 49407
      .TintAndShade = 0
   End With
   MsgBox "MFC Appliquée"
End Sub
 

Pièces jointes

Dernière édition:
Re : RESOLU: MFC avec formule utilisant une fonction personnelle.. le tout. en VBA

Salut Mapomme,
ta solution paliative est pas mal non plus..
à vrai dire. j'avais aussi essayé en deux fois. créer la règle. .puis modifier la règle.. sauf que.. ca ne donnait rien..
en fait. ca montre surtout que je ne suis pas au fait de ces instructions: ontime, enableevent, screenupdating.. etc etc...
je vais devoir m'y pencher de plus près. suis sur que ca résoudrait pas mal de mes soucis..;-)
en tout ca merci
 
Bonjour,
2012 --> 2024: Micromou persiste .
Cela fait presque 6 mois que je m'arrachais les cheveux pour une MFC à base de fonction personnelle qui est reconstruite par code.
Reconstruction assez aléatoire avec tendance vers l'erreur sans aucune explication .

Avec Application.ScreenUpdating = false, tout va bien
Merci @vgendron
 
- 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
5
Affichages
847
Retour