Formule dans VBA trop longue

iStarOSX

XLDnaute Junior
Bonjour a tous et merci d'avance a ceux qui pourront m'aider.

Voila, je voudrai avoir une macro qui inséré une formule dans les cellules préalablement sélectionné.

D'habitude, j'utilise l'enregistreur de Macro pour enregistrer ma formule, mais la Excel me dit qu'il est impossible d'enregistrer".

Voici ma formule, qui fonctionne lorsque je la rentre a la main :
Code:
(DY180=0;SI($ED$2>1;SI(OU(ET(OU(ET(DE180=5;DM180=7;DR180=$EF$2);ET(DE180=5;DM180=6;(DJ180-DR180)=$EF$2));DT180=0);ET(OU(ET(DE180=6;DM180=6;(DK180+DR180)=$EF$2);ET(DE180=5;DM180=5;(DJ180+DQ180)=$EF$2));DT180>0));$EE$2;$EA$2);$EA$2);$EC$2)

Ma formule semble trop longue pour l'enregistreur, Donc je la rentre a la main. Cela me donne :
Code:
=IF(RC[-2]=0;IF(R2C134>1;IF(OR(AND(OR(AND(RC[-22]=5;RC[-14]=7;RC[-9]=R2C136);AND(RC[-22]=5;RC[-14]=6;(RC[-17]-RC[-9])=R2C136));RC[-7]=0);AND(OR(AND(RC[-22]=6;RC[-14]=6;(RC[-16]+RC[-9])=R2C136);AND(RC[-22]=5;RC[-14]=5;(RC[-17]+RC[-10])=R2C136));RC[-7]>0));R2C135;R2C131);R2C131);R2C133)


Mais lors de l’exécution cela me fait "bug" de ma macro.

Je cherche comment arriver a résoudre mon problème.

Merci.
 

pierrejean

XLDnaute Barbatruc
Re : Formule dans VBA trop longue

Bonjour iStarOSX

A tester:
Code:
Sub form()
f = "=SI(DY180=0;SI($ED$2>1;SI(OU(ET(OU(ET(DE180=5;DM180=7;DR180=$EF$2);ET(DE180=5;DM180=6;(DJ180-DR180)=$EF$2));DT180=0);ET(OU(ET(DE180=6;DM180=6;(DK180+DR180)=$EF$2);ET(DE180=5;DM180=5;(DJ180+DQ180)=$EF$2));DT180>0));$EE$2;$EA$2);$EA$2);$EC$2)"
Range("I18").FormulaLocal = f
End Sub
 

iStarOSX

XLDnaute Junior
Re : Formule dans VBA trop longue

Bonjour Pierre Jean et merci pour l'aide.

Ton code ne semble pas fonctionner.

En plus de ce que j'en comprend, celui ci fonctionnera uniquement sur la ligne 180.

Hors je veux que, si je sélectionne sur la ligne 500 la formule prenne les cellule de la ligne 500, etc..

Merci tout de même et a bientôt.
 

ROGER2327

XLDnaute Barbatruc
Re : Formule dans VBA trop longue

Bonjour iStarOSX, pierrejean


Encore faudrait-il que nous sussions cette formule est saisie.

Saisie en A1 on a :
Code:
"=IF(R[179]C[128]=0,IF(R2C134>1,IF(OR(AND(OR(AND(R[179]C[108]=5,R[179]C[116]=7,R[179]C[121]=R2C136),AND(R[179]C[108]=5,R[179]C[116]=6,(R[179]C[113]-R[179]C[121])=R2C136)),R[179]C[123]=0),AND(OR(AND(R[179]C[108]=6,R[179]C[116]=6,(R[179]C[114]+R[179]C[121])=R2C136),AND(R[179]C[108]=5,R[179]C[116]=5,(R[179]C[113]+R[179]C[120])=R2C136)),R[179]C[123]>0)),R2C135,R2C131),R2C131),R2C133)"


ROGER2327
#5718


Dimanche 8 Clinamen 139 (La Machine à Peindre - fête Suprême Seconde)
10 Germinal An CCXX, 6,5582h - couvoir
2012-W13-5T15:44:23Z
 

ROGER2327

XLDnaute Barbatruc
Re : Formule dans VBA trop longue

Re...


Bonsoir Roger2327

En fait cette formule s'applique sur une cellule de la colonne "EA" que je sélectionne.

Bonne soirée
Dans ce cas, essayez :
Code:
"=IF(R[179]C[-2]=0,IF(R2C134>1,IF(OR(AND(OR(AND(R[179]C[-22]=5,R[179]C[-14]=7,R[179]C[-9]=R2C136),AND(R[179]C[-22]=5,R[179]C[-14]=6,(R[179]C[-17]-R[179]C[-9])=R2C136)),R[179]C[-7]=0),AND(OR(AND(R[179]C[-22]=6,R[179]C[-14]=6,(R[179]C[-16]+R[179]C[-9])=R2C136),AND(R[179]C[-22]=5,R[179]C[-14]=5,(R[179]C[-17]+R[179]C[-10])=R2C136)),R[179]C[-7]>0)),R2C135,R2C131),R2C131),R2C133)"


ROGER2327
#5723


Dimanche 8 Clinamen 139 (La Machine à Peindre - fête Suprême Seconde)
10 Germinal An CCXX, 9,5070h - couvoir
2012-W13-5T22:49:00Z
 

Discussions similaires

Réponses
1
Affichages
1 K
  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
320

Statistiques des forums

Discussions
312 236
Messages
2 086 477
Membres
103 232
dernier inscrit
logan035