Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formulalocal

22 réponses
Avatar
JP
Bonjour,

Comme il existe une fonction vba formulalocal pour mettre en place une form=
ule, Est-ce qu'il existe un equivalent pour mettre ne place des MFC?
J'ai cette MFC =E0 mettre en place:
=3DET(MOYENNE($L13:$Q13)>=3D2;NB($L12:$Q12)>=3DNBVAL($L$11:$Q$11);MOYENNE($=
L12:$Q12)>=3D2)
La plage s'applique de D12:K12

Si c'est possible, je suis preneur d'un exemple.

Merci d'avance


JP

10 réponses

1 2 3
Avatar
JP
Isabelle,

Même chose, l'erreur reste la même.
J'ai essayé de déclarer les variables plages en as string mais c'est en core la même chose.
J'ai apporté une modif dans la ligne:
Plage1 = .Range(Cells(11, deb + 1), Cells(11, fin + 11)).AddressLocal(Row Absolute:=True)

J'ai changé AddressLocal(RowAbsolute:úlse)en AddressLocal(RowAbsolute :=True)car j'avais besoin d'une valeur absolue de la plage.

Mystère car la formulation que tu m'as donnée est la bonne.

JP
Avatar
JP
Isabelle,
J'ignore si cette remarque est intéressante.
Dans le code en pas à pas, au moment de l'erreur 1004,l'expression "xlExp ression" est =2
Je parle de la ligne:
.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(MOYENNE(" & Plage3 & ")>=2;NB(" & Plage2 & ")>=NBVAL(" & Plage1 & ");MOYENNE(" & Pl age2 & ")>=2)"

JP
Avatar
MichD
Un fichier exemple avec la même procédure VBA que je te proposais plutôt!
http://cjoint.com/?DDpncrG2LBR

Regarde la formule contenue dans la cellule en jaune et la formule de la
mise en forme conditionnelle.
Avatar
JP
Bonjour Denis,

Démonstration concluante!
Je vais éviter .FormatConditions.Delete car j'ai d'autres mises en forme sur les cellules. Ceci dit, en intégrant la partie de code j'ai maintenan t l'erreur 1004 sur la ligne .FormatConditions.Delete.

Je suis un peu dépassé je l'avoue.

JP
Avatar
MichD
| Ceci dit, en intégrant la partie de code j'ai maintenant
| l'erreur 1004 sur la ligne .FormatConditions.Delete.

Si tu n'en as pas besoin, tu supprimes cette ligne de code.


.FormatConditions.Add Type:=xlExpression, Formula1:="=ET(MOYENNE(" & _
Plage3 & ")>=2;NB(" & Plage2 & ")>=NBVAL(" & Plage1 &
");MOYENNE(" & Plage2 & ")>=2)"

Tu as combien de mises en forme différente sur cette cellule?
Si tu as déjà 2 autres formules dans celles déjà existantes, peux-tu
toujours utiliser le nom du paramètre : "Formula1" si elle représente
en fait la 3 Er formule? Pourquoi ne pas essayer "Formula3" ?

.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(1).StopIfTrue = False

Dans la première ligne de code, tu utilises : (.FormatConditions.Count)
tandis que dans la deuxième, tu emploies (1) . Est-ce que c'est vraiment
ce que tu veux faire?

Au-delà ça, je ne peux pas deviner ce qui bloque....
Avatar
JP
Denis,

Avec tes conseils, j'ai réussi à faire passer la MFC une fois et depuis plus rien.
J'ai reproduis la situation avec une boucle.
Faut-il effacer les mfc et toutes les recréer?

http://cjoint.com/?DDprH79MQnC

L'erreur 1004 n'est plus d'actualité mais c'est l'indice FormatConditions (1).Interior qui pose problème.

JP
Avatar
MichD
Remplace ces 2 lignes de code par :

.FormatConditions(.FormatConditions.Count).SetFirstPriority
.FormatConditions(.FormatConditions.Count).StopIfTrue = False
Avatar
JP
Denis,


Belle progression. Il reste une interrogation.
Pourquoi à l'application de la macro la première ligne perd les autres MFC ou modifie les autres MFC?

Clique le bouton test pour voir le phénomène.
http://cjoint.com/?DDptMTp3Rba

JP
Avatar
MichD
.FormatConditions.Delete

Cette ligne de code supprime toutes les mises en forme conditionnelle sur
ladite plage de cellules.

Si tu veux conserver celles déjà existantes et ajouter celle dans la
procédure, tu inhibes cette ligne de code ou tu la supprimes totalement.

MichD
---------------------------------------------------------------
Avatar
JP
Denis,

Je comprends bien mais comment remettre les autres en place.
L'enregistreur de macro ne donne aucune information, il ne fait rien.
Est-ce possible au moins?

Merci
JP
1 2 3