[EXCEL 2010 VBA] Macro pour une formule.

adrienDN11 Messages postés 589 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Je cherche depuis quelques jours à intégrer une formule dans un classeur Excel via un code VBA.

J'ai fait ce code ci :

ActiveSheet.Range("IV8").End(xlToLeft).Select
Selection.FormulaArray = _
"=IF(ISERROR(SUM(IF(ISNUMBER(OFFSET(R[3]C[-1],,,1,COUNT(R7C1:R7C7))),OFFSET(R[3]C[-1],,,1,COUNT(R7C1:R7C7))))/SUM(IF(ISNUMBER(OFFSET(R[3]C[-1],,,1,COUNT(R7C1:R7C7))),OFFSET(R7C3,,,1,COUNT(R7C1:R7C7))))*10),IF(R[3]C[-3]="""","""",""Absent""),(SUM(IF(ISNUMBER(OFFSET(R[3]C[-1],,,1,COUNT(R7C1:R7C7))),OFFSET(R[3]C[-1],,,1,COUNT(R7C1:R7C7))))/SUM(IF(ISNUMBER(OFFSET(R[3]C[-" & _
"OUNT(R7C1:R7C7))),OFFSET(R7C3,,,1,COUNT(R7C1:R7C7))))*10))"

Ce code qui doit prendre toutes les valeurs de la ligne précédentes pour en faire une sorte de moyenne via les totaux qui se trouvent sur la ligne du dessus qui est la ligne des maxima

Mais j'obtiens l'erreur 1004.

Lorsque j'essaye d'intégrer ma formule en Français comme c'est le cas déjà sur la feuille (que j'ai utilisée pour créer cette formule), j'ai cette formule :

=SI(ESTERREUR(SOMME(SI(ESTNUM(DECALER(C8;;;1;NB($A$7:$G$7)));DECALER(C8;;;1;NB($A$7:$G$7))))/SOMME(SI(ESTNUM(DECALER(C8;;;1;NB($A$7:$G$7)));DECALER($C$7;;;1;NB($A$7:$G$7))))*10);SI(A13="";"";"Absent");(SOMME(SI(ESTNUM(DECALER(C8;;;1;NB($A$7:$G$7)));DECALER(C8;;;1;NB($A$7:$G$7))))/SOMME(SI(ESTNUM(DECALER(C8;;;1;NB($A$7:$G$7)));DECALER($C$7;;;1;NB($A$7:$G$7))))*10))

Mais il me dit que "Absent" est incorrect. Je pense qu'il prend ça pour une fin d'instruction avec les guillemets.

Dans mon code VBA, je met pourtant

Selection.FormulaArray = _
"=MaFormuleEnFrançais"

Logiquement, les guillemets de contour devraient empêcher cela, mais non.

Quelqu'un pour m'aider ?

Merci,
Adrien


A voir également:

3 réponses

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir,

Elle n'est pas light ta formule...
Es-tu vraiment obligé de la faire en matricielle ?
Sinon tu peux la mettre (dans une 1ère cellule) en français dans vba avec .formulalocal en copiant-collant celle de la feuille.
Puis la recopier vers la droite avec .autofill

eric
0
adrienDN11 Messages postés 589 Statut Membre 137
 
Salut,

Eh oui, une formule qui aura été longue à obtenir. Oui, la matricielle est impérative ici. Je vais essayer de faire ce que tu me dis.

Je tiens au courant,

Adrien
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour

pour obtenir

=SI($A$1="";1;"absent")
j'ai tenté les " avec le code 34, ce qui ne va pas simplifier la bête ...

Dim f As String
f = "=SI($A$1=" & Chr(34) & Chr(34) & ";1;" & Chr(34) & "absent" & Chr(34) & ")"
Range("A2").FormulaLocal = f

ça a l'air de fonctionner

bonne chance
0