Conversion formule cellule en code VBA

Bonjour à tous,

J'ai une formule matricielle dans une cellule que je souhaiterais transformer en code vba

={SI(C2=0;"";INDEX(SAISIE_Auto!K:K;MAX(SI((SAISIE_Auto!J:J=CONCATENER(NQR!A2;"BQ"));

LIGNE(INDIRECT("1:"&LIGNES(SAISIE_Auto!J:J);1))))))}

Quelqu’un saurait-il me dire comment la transcrire ?

du type

Cells(1, 2).Value ={IF(C2=0;"";INDEX(SAISIE_Auto...

Une fois que j'aurais compris le principe je pourrais en faire d'autre...

Merci beaucoup et d'avance pour votre contribution !

Chree74

Bonjour,

Si tu veux aller au plus simple en VBA... il est préferrable que tu utilises Evaluate ...

Ok merci

Et ça ressemblerait à quoi avec une formule matricielle ?

Re,

Sans les accolades ...

Range("A1").Value = Evaluate("=taformule")

Bonjour et merci

J'ai essayé avec une formule matricielle suivante :

={SIERREUR(MOYENNE(SI(DECALER(K$1;GRANDE.VALEUR(SI(K$1:K$10000=CONCATENER(N2;"BQ");LIGNE(K$1:K$10000));6)-1;;999)=

CONCATENER(N2;"BQ");DECALER(L$1;GRANDE.VALEUR(SI(K$1:K$10000=CONCATENER(N2;"BQ");LIGNE(K$1:K$10000));6)-1;;999)));

RECHERCHEV(N2;K$1:L$10000;6;0))}

Range("R2").Value = Evaluate("=IFERROR(AVERAGE(IF(OFFSET(K$1,LARGE(IF(K$1:K$10000=CONCATENATE(N2,'BQ'),ROW(K$1:K$10000)),6)-1,,999)=CONCATENATE(N2,'BQ'),OFFSET(L$1,LARGE(IF(K$1:K$10000=CONCATENATE(N2,'BQ'),ROW(K$1:K$10000)),6)-1,,999))),VLOOKUP(N2,K$1:L$10000,6,0))}")

mais j'ai le résultat suivant :

#VALEUR!

Bonjour,

Le plus simple ... c'est tout de même que tu joignes ton fichier à ton prochain message ...

Ok il faut juste que je laisse l'essentiel car il fait 25 mo !!

chree74 a écrit :

Ok il faut juste que je laisse l'essentiel car il fait 25 mo !!

Effectivement ... il ne faut que la feuille significative ... et encore ... car 10 lignes suffisent ...

Fichier joint

merci !

16classeur1.xlsm (16.52 Ko)

Bonjour,

Ci-joint ton fichier test ...

54test-chree74.xlsm (17.79 Ko)

Bonjour à tous,

Pour Evaluate() il ne faut pas mettre le "=" de la formule.

Autre façon de faire : mettre la formule dans un nom (formule1 par exemple) et en vba :

[I2] = [formule1]

pour avoir le résultat.

Attention à la cellule active lors de la saisie de la formule en cas de références relatives.

Sinon je ne sais pas ce que tu veux calculer mais une moyenne de pourcentages n'a jamais donné de résultats mathématiquement valables. Tout comme une moyenne de moyenne d'ailleurs.

Tu as un panier1 de 4 pommes et 1 poire, soit 1/(4+1)=20% de poires parmi tes fruits.

Tu as un panier2 de 24 pommes et 22 poires, soit 47.83% de poires parmi tes fruits.

Tu as donc 23 poires sur 51 fruits soit 45.1%

Moyenne des % : (20%+47.83%)/2 = 33.91%. Ce qui n'a strictement rien à voir...

Il faut toujours partir des nombres d'origine.

eric

Bonjour et merci à tous les 2 pour vos contributions

Eric

J'ai choisi cette méthode de calcul que je savais ± empirique. C'est pourquoi le pourcentage de chaque cellule est basé sur un échantillonnage que j'ai voulu le plus représentatif de mon besoin. Il n'est certes pas fiable à 100% (loin s'en faut ! ) mais il m'aide quand même dans la décision !

Merci encore une fois

Bonjour,

Ci-joint ton fichier test ... avec les deux solutions ...

Si ma vue n'a pas encore trop faiblie ... avec Evaluate() ...

56test-chree74.xlsm (17.83 Ko)

Bonjour,

C'est vrai qu'en soit il ne gène pas Même ===== ça passe

eric

Salut Eriiic ...

Ma remarque sur ma vue qui faiblit ne concernait pas le signe = dans Evaluate() ... mais en fait la remarque de Chree74 ... sur la nécessité d'avoir les deux solutions ...

Mais entre-temps ... il a décidé d'éditer son message et d'effacer cette remarque ...

Cela dit, tu as entièrement raison ... le signe égal ne sert strictement à rien ...

Rechercher des sujets similaires à "conversion formule code vba"