[EXCEL 2010 VBA] Macro pour une formule.
adrienDN11
Messages postés
589
Statut
Membre
-
ccm81 Messages postés 11033 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
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:
- [EXCEL 2010 VBA] Macro pour une formule.
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
3 réponses
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
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
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
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