[EXCEL 2010 VBA] Macro pour une formule.

Fermé
adrienDN11 Messages postés 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 - 2 juin 2011 à 17:43
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 - 3 juin 2011 à 10:00
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 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 2/06/2011 à 22:23
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 467 Date d'inscription vendredi 24 avril 2009 Statut Membre Dernière intervention 5 janvier 2015 137
2 juin 2011 à 22:37
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 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 3/06/2011 à 14:37
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