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

Fonction dans Range par macro

12 réponses
Avatar
Céline
Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71=12);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74=12);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77=12);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80=12);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83=12);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86=12);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89=12);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92=12);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95=12);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98=12);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101=12);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104=12);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107=12);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110=12);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci

10 réponses

1 2
Avatar
FFO
Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci




Avatar
Céline
Bonjour FFO et merci
j'avais bien essayé avec IF et AND seulement ce que je ne comprends pas
c'est pourquoi les lignes ne correspondent pas.
Peux-tu me dire comment on peut trouver la correspondance, et pourquoi il y
a 4 fois la formule à quoi correspond A B C D ,

je vais voir si ça fonctionne

Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci






Avatar
Céline
Coucou

Me revoilà, j'ai testé, ça marche dans le sens ou ma boucle l'accepte,
seulement les cellules ne correspondent pas, ma cellule affiche du coup un
FAUX au lieu de la réponse au calcul, je pense que ça vient de là, enfin
j'espère, voilà à quelles cellules correspond ton code :

=SI(ET(CF84>0;CG85);$AU$6*$E$9;0)+SI(ET(CF87>0;CG88);$AU$9*$E$9;0)+SI(ET(CF90>0;CG91);$AU$12*$E$9;0)+SI(ET(CF93>0;CG94);$AU$15*$E$9;0)=SI(ET(CF96>0;CG97);$AU$18*$E$9;0)+SI(ET(CF99>0;CG100);$AU$21*$E$9;0)+SI(ET(CF102>0;CG103);$AU$24*$E$9;0)+SI(ET(CF105>0;CG106);$AU$27*$E$9;0)=SI(ET(CF108>0;CG109);$AU$30*$E$9;0)+SI(ET(CF111>0;CG112);$AU$33*$E$9;0)+SI(ET(CF114>0;CG115);$AU$36*$E$9;0)+SI(ET(CF117>0;CG118);$AU$39*$E$9;0)=SI(ET(CF120>0;CG121);$AU$42*$E$9;0)+SI(ET(CF123>0;CG124);$AU$45*$E$9;0)+SI(ET($V$45>0;CF122>0;CF122<12);$AU$45*$E$9;"0")

Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci






Avatar
Céline
Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci






Avatar
FFO
Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci








Avatar
Céline
Recoucou

Merci pour les explications c'était très clair
bon mais j'ai un souci !!!

j'ai changé les numéros des lignes et colonnes, tout fontionne mais
seulement pour les deux premier le a et b à partir du c c'est plus bon je
comprends pas pourquoi, le fait de changer + en & n'enlève pas le FAUX car
apparemment c'était bien la seule modif que tu avais fait.
voilà ce que devient le code :

Range("BM15").Select

ActiveCell.FormulaR1C1 =
"=IF(AND(R[55]C[-40]>0,R[56]C[-39]),R6C47*R9C5,0)+IF(AND(R[58]C[-40]>0,R[59]C[-39]),R9C47*R9C5,0)+IF(AND(R[61]C[-40]>0,R[62]C[-39]),R12C47*R9C5,0)+IF(AND(R[64]C[-40]>0,R[65]C[-39]),R15C47*R9C5,0)"
a = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 =
"=IF(AND(R[67]C[-40]>0,R[68]C[-39]),R18C47*R9C5,0)+IF(AND(R[70]C[-40]>0,R[71]C[-39]),R21C47*R9C5,0)+IF(AND(R[73]C[-40]>0,R[74]C[-39]),R24C47*R9C5,0)+IF(AND(R[76]C[-40]>0,R[77]C[-39]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 =
"=IF(AND(R[79]C[-40]>0,R[80]C[-39]),R30C47*R9C5,0)+IF(AND(R[83]C[-40]>0,R[84]C[-39]),R33C47*R9C5,0)+IF(AND(R[87]C[-40]>0,R[88]C[-39]),R36C47*R9C5,0)+IF(AND(R[90]C[-40]>0,R[91]C-39]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 =
"=IF(AND(R[93]C[-40]>0,R[94C[-39]),R42C47*R9C5,0)+IF(AND(R[96]C[-40]>0,R[97]C[-39]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[95]C[-40]>0,R[95]C[-40]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = a + B + C + D


voilà les nouvelles !!
Céline


Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci










Avatar
Céline
C'est encore moi !!!
Je viens de repasser la tienne et tout fonctionne bien, et oui même le FAUX
plus de souci.
Seulement le problème est que les cellules ne correspondent pas, c'est
pourquoi j'ai changé les numéros, et juste en faisant ça ça ne marche plus
???? c'est fou


Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci










Avatar
FFO
Je pense que tu aurais plutôt intéret de passer par la création manuelle avec
l'enregistreur de macro pour ne pas te tromper et rapatrier tous les petits
codes en une seule macro tel que je te l'ai proposé
Ta formule et si longue que de changer à la main au grés des nouvelles
cellules devient perilleux

Ne croix tu pas

Si je peux t'aider !!!


C'est encore moi !!!
Je viens de repasser la tienne et tout fonctionne bien, et oui même le FAUX
plus de souci.
Seulement le problème est que les cellules ne correspondent pas, c'est
pourquoi j'ai changé les numéros, et juste en faisant ça ça ne marche plus
???? c'est fou


Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci












Avatar
Céline
Oui c'est ce que j'avais fait la première fois, mais l'enregistreur ne me
l'enregistre pas !!!!!


Je pense que tu aurais plutôt intéret de passer par la création manuelle avec
l'enregistreur de macro pour ne pas te tromper et rapatrier tous les petits
codes en une seule macro tel que je te l'ai proposé
Ta formule et si longue que de changer à la main au grés des nouvelles
cellules devient perilleux

Ne croix tu pas

Si je peux t'aider !!!


C'est encore moi !!!
Je viens de repasser la tienne et tout fonctionne bien, et oui même le FAUX
plus de souci.
Seulement le problème est que les cellules ne correspondent pas, c'est
pourquoi j'ai changé les numéros, et juste en faisant ça ça ne marche plus
???? c'est fou


Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci














Avatar
FFO
Surprenant
Si tu respectes pas plus de 4 "SI" chez moi mon enregistreur est docile et
de faire aprés ma composition

Si le tiens en véritable mutin se rebelle envoies moi tes besoins je me
ferai une joie de te concocter les codes et toi aprés de les utiliser
Profites en en ce moment c'est ma période de bonté, c'est gratuit !!!!
A tantôt peut être !!!




Oui c'est ce que j'avais fait la première fois, mais l'enregistreur ne me
l'enregistre pas !!!!!


Je pense que tu aurais plutôt intéret de passer par la création manuelle avec
l'enregistreur de macro pour ne pas te tromper et rapatrier tous les petits
codes en une seule macro tel que je te l'ai proposé
Ta formule et si longue que de changer à la main au grés des nouvelles
cellules devient perilleux

Ne croix tu pas

Si je peux t'aider !!!


C'est encore moi !!!
Je viens de repasser la tienne et tout fonctionne bien, et oui même le FAUX
plus de souci.
Seulement le problème est que les cellules ne correspondent pas, c'est
pourquoi j'ai changé les numéros, et juste en faisant ça ça ne marche plus
???? c'est fou


Re bonjours Celine
Tout d'abord j'ai laissé passer une coquille dans mon code qui a pour
inconvénient de mettre FAUX au lieu de 0
Le code rectifié ext celui ci :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
c = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"+IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A & B & c & D

J'attire ton attention sur le résultat de cette macro trés lié à la position
de la cellule active
Il est différent d'une cellule à l'autre car la macro détermine les données
à mettre dans la formule en fonction de la cellule de départ
Les chiffres que tu as à côté des R et des C correspondent au décalage à
opérer entre la cellule de départ (cellule active ici) et celle de destination
Ce qui explique les résultats différents obtenus en fonction de la position
de la cellule active

Pour construire A B C D tu créer 4 macros en enregistrement manuel et à
chacune d'elle tu insères une partie de la formule finale à obtenir par
exemple pour A tu insere dans la formule de la cellule active :
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)

Pour B :

+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)

Ainsi de suite

Ce qui correspond à 4 "SI" maximum
Ensuite dans une seule et même macro tu rapatries tous les codes créés par
toutes les petites macros
Puis à la fin de ce nouveau code tu insères l'instruction qui concaténe
toutes les parties représentées par les lettres
ce qui devient la formule de la cellule active ici :
ActiveCell.FormulaR1C1 = A & B & c & D

Reste à trouver un code judicieux à associer pour traiter toutes tes feuilles

As tu tout compris ???
Celà te convient-il ???
As tu encore besoin d'aide pour finaliser ???
A ton service !!!


Ah oui OK j'avais pas vu tu as scindé l'ensemble du calcul en 4 parties, bon
annule ma question !!! par contre retient toujours pour m'expliquer comment
tu trouves la correspondance de la cellule, t'inquiètes je vois bien que R
c'est row et C column mais j'ai absolument besoin de comprendre la
correspondance parce qu'en plus je n'ai pas que lui à faire et je ne vais
tout de même tout te faire traduire !!!

Merci beaucoup
Céline


Salut Céline
Solution macro :

ActiveCell.FormulaR1C1 = _

"=IF(AND(R[69]C[19]>0,R[70]C[20]),R6C47*R9C5,0)+IF(AND(R[72]C[19]>0,R[73]C[20]),R9C47*R9C5,0)+IF(AND(R[75]C[19]>0,R[76]C[20]),R12C47*R9C5,0)+IF(AND(R[78]C[19]>0,R[79]C[20]),R15C47*R9C5,0)"
A = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[81]C[19]>0,R[82]C[20]),R18C47*R9C5,0)+IF(AND(R[84]C[19]>0,R[85]C[20]),R21C47*R9C5,0)+IF(AND(R[87]C[19]>0,R[88]C[20]),R24C47*R9C5,0)+IF(AND(R[90]C[19]>0,R[91]C[20]),R27C47*R9C5,0)"
B = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[93]C[19]>0,R[94]C[20]),R30C47*R9C5,0)+IF(AND(R[96]C[19]>0,R[97]C[20]),R33C47*R9C5,0)+IF(AND(R[99]C[19]>0,R[100]C[20]),R36C47*R9C5,0)+IF(AND(R[102]C[19]>0,R[103]C[20]),R39C47*R9C5,0)"
C = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = _

"=IF(AND(R[105]C[19]>0,R[106]C[20]),R42C47*R9C5,0)+IF(AND(R[108]C[19]>0,R[109]C[20]),R45C47*R9C5,0)+IF(AND(R45C22>0,R[107]C[19]>0,R[107]C[19]<12),R45C47*R9C5,""0"")"
D = ActiveCell.FormulaR1C1
ActiveCell.FormulaR1C1 = A + B + C + D

Reste à rajouter dans ce code l'instruction pour mettre la cellule active
dans chaque classeur à traiter comme par exemple :

Workbooks("Classeur1").Activate
Sheets("Feuil2").Select
Range("A1").Select
et tout le code ci-dessus

Celà te convient-il ???
Dis moi !!!


Bonjour,
voilà ma cellule qu'il faut que je copie dans plusieurs classeurs:
=SI(ET(Y70>0;Z71);$AU$6*$E$9;0)+SI(ET(Y73>0;Z74);$AU$9*$E$9;0)+SI(ET(Y76>0;Z77);$AU$12*$E$9;0)+SI(ET(Y79>0;Z80);$AU$15*$E$9;0)+SI(ET(Y82>0;Z83);$AU$18*$E$9;0)+SI(ET(Y85>0;Z86);$AU$21*$E$9;0)+SI(ET(Y88>0;Z89);$AU$24*$E$9;0)+SI(ET(Y91>0;Z92);$AU$27*$E$9;0)+SI(ET(Y94>0;Z95);$AU$30*$E$9;0)+SI(ET(Y97>0;Z98);$AU$33*$E$9;0)+SI(ET(Y100>0;Z101);$AU$36*$E$9;0)+SI(ET(Y103>0;Z104);$AU$39*$E$9;0)+SI(ET(Y106>0;Z107);$AU$42*$E$9;0)+SI(ET(Y109>0;Z110);$AU$45*$E$9;0)+SI(ET($V$45>0;Y108>0;Y108<12);$AU$45*$E$9;"0")

j'ai essayé pleins de trucs mais impossible,
comment puis-je écrire une fonction dans range ???
Merci
















1 2