Erreur 1004 lors de l'insertion d'une formule avec VBA
a
Bonjour tout le monde !
Je souhaite insérer dans une cellule la formule suivante à l'aide d'un code VBA :
=SIERREUR(
(
((E15 * (1 + ((SIERREUR((RECHERCHEV(A15;INDIRECT("Objectif!$A$"&(SIERREUR(LIGNE(INDEX(Objectif!BB:BB;EQUIV(PARAM!$B$29;Objectif!BB:BB;0)))+1;1))):Objectif!$Z$999725;3;1));(PARAM!ObjMax)))/100)))
-
(E15))
*
((SIERREUR((RECHERCHEV(A15;INDIRECT("Objectif!$A$"&(SIERREUR(LIGNE(INDEX(Objectif!BB:BB;EQUIV(PARAM!$B$29;Objectif!BB:BB;0)))+1;1))):Objectif!$Z$999725;3;1));(PARAM!ObjMax)))/100)
);où E15 doit être remplacé par E" & ligne & " et A15 doit être remplacé par A" & ligne & "
J'ai essayé avec ce code ci-dessous, mais j'obtiens une erreur "1004" (sans doute due à une mauvaise gestion des parenthèses avec INDIRECT) :
Sheets(ma_feuille).Range("diff").Range("A" & ligne).Formula = "=IFERROR((((E" & ligne & " * (1 + ((IFERROR((VLOOKUP(A" & ligne & ",INDIRECT(" & ""Objectif!$A$"" & "&(IFERROR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1))):Objectif!$Z$999725,3,1)),(PARAM!ObjMax)))/100)))-(E" & ligne & "))*((SIERREUR((RECHERCHEV(A" & ligne & ",INDIRECT(" & ""Objectif!$A$"" & "&(SIERREUR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1))):Objectif!$Z$999725,3,1)),(PARAM!ObjMax)))/100)),0)"Je bloque là malheureusement. Un grand merci par avance de votre aide. Je vous souhaite par ailleurs de belles fêtes !
a
Une autre piste avec ce code (pas encore testé) :
Sheets(ma_feuille).Range("diff").Range("A" & ligne).Formula = "=IFERROR((((E" & ligne & " * (1 + ((IFERROR((VLOOKUP(A" & ligne & ",INDIRECT(""Objectif!$A$""&(IFERROR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1))):Objectif!$Z$999725,3,1)),(PARAM!ObjMax)))/100)))-(E" & ligne & "))*((SIERREUR((RECHERCHEV(A" & ligne & ",INDIRECT(""Objectif!$A$""&(SIERREUR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1))):Objectif!$Z$999725,3,1)),(PARAM!ObjMax)))/100)),0)"Bonjour,
Un essai
' Auteur : https://www.linkedin.com/in/spilerstheo/
Sub InsererFormule()
Dim ma_feuille As String
Dim ligne As Long
ma_feuille = "NomDeVotreFeuille" ' Remplacez par le nom de votre feuille
ligne = 1 ' Remplacez par le numéro de la ligne désirée
Sheets(ma_feuille).Range("A" & ligne).Formula = "=IFERROR(" & _
"(((E" & ligne & " * (1 + ((IFERROR((VLOOKUP(A" & ligne & ",INDIRECT(""Objectif!$A$"" & " & _
"(IFERROR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1)),FALSE)):Objectif!$Z$999725,3,FALSE)),(PARAM!ObjMax)))/100)))-(E" & ligne & "))" & _
"*((IFERROR((VLOOKUP(A" & ligne & ",INDIRECT(""Objectif!$A$"" & " & _
"(IFERROR(ROW(INDEX(Objectif!BB:BB,MATCH(PARAM!$B$29,Objectif!BB:BB,0)))+1,1)),FALSE)):Objectif!$Z$999725,3,FALSE)),(PARAM!ObjMax)))/100),0)"
End SubCordialement,
Parrish