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

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

  • MFC avec fonction personnelle.xlsm
    17.5 KB · Affichages: 53
  • MFC avec fonction personnelle.xlsm
    17.5 KB · Affichages: 58
  • MFC avec fonction personnelle.xlsm
    17.5 KB · Affichages: 55
Dernière édition:

JCGL

XLDnaute Barbatruc
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: 96
  • Capture_1.jpg
    Capture_1.jpg
    30.7 KB · Affichages: 93

Staple1600

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

vgendron

XLDnaute Barbatruc
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à ;-)
 

Staple1600

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

vgendron

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

vgendron

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

  • MFC avec fonction personnelle.xlsm
    17.9 KB · Affichages: 41
  • MFC avec fonction personnelle.xlsm
    17.9 KB · Affichages: 45
  • MFC avec fonction personnelle.xlsm
    17.9 KB · Affichages: 44

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • MFC avec fonction personnelle v1.xlsm
    22.2 KB · Affichages: 48
Dernière édition:

vgendron

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

fanch55

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

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 342
Membres
111 107
dernier inscrit
cdel