VBA Bug enregistrement macro

Fermé
actaris51 Messages postés 93 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 11 juillet 2011 - 10 août 2009 à 12:13
 melanie1324 - 10 août 2009 à 15:37
Bonjour,
j'ai constaté un bug très ennuyant sous Excel 2000:
Dans une cellule, j'ai la formule suivante :
=SI(SOMMEPROD((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*1)>0;SOMMEPROD((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*Delay)/SOMMEPROD((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*1);0)

Le problème, lorsque je fais enregistrer une macro, que je prend ma celullule et appuie sur entrée, vba me code ca :
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<TODAY())*(Budget_Owner=RC25)*(Status<>""Validated"")*(Status<>""Cancelled"")*1)>0 SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<TODAY())*(Budget_Owner=RC25)*(Status<>""Validated"")*(Status<>""Cancelled"")*Delay)Delay "

Comme vous le remarquez, la formule est fausse. Pour mes autres formules, l'enregistrement de macro ne fait pas d'erreurs, mais là si.
Savez vous pourquoi ?
Pouvez vous m'aider à réécrire le bon code VBA ?

Merci
A voir également:

3 réponses

Bonjour,

Voici la formule que tu dois utiliser dans vba :
=if(SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*1)>0;SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*Delay)/SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>"Validated")*(Status<>"Cancelled")*1);0)
0
actaris51 Messages postés 93 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 11 juillet 2011 2
10 août 2009 à 13:46
Ca ne semble pas marcher
Il me dit : erreur definie par l'application ou l'objet
voici le bout de code :
'Average Delay Formula
With .Range("AB24:AB" & Range("AA24").End(xlDown).Row)
.FormulaR1C1 = _
"=if(SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*1)>0;SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*Delay)/SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*1);0)"
End With

merci
0
re,

essaie dans un premier temps ce bout de code

range("Ab24").select
ActiveCell.FormulaR1C1 ="=if(SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*1)>0;SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*Delay)/SUMPRODUCT((Delay>0)*(Latest_Agreed_Baseline<AUJOURDHUI())*(Budget_Owner=$Y24)*(Status<>""Validated"")*(Status<>""Cancelled"")*1);0)"

est ce que cela marche? Si non, je pense que c'est parce que vba ne reconait pas les noms de plage.
Si non, essaie :
range("Ab24").select
ActiveCell.FormulaR1C1 ="=if(SUMPRODUCT(("""Delay""">0)*("""Latest_Agreed_Baseline"""<AUJOURDHUI())*("""Budget_Owner"""=$Y24)*("""Status"""<>""Validated"")*("""Status"""<>""Cancelled"")*1)>0;SUMPRODUCT(("""Delay""">0)*("""Latest_Agreed_Baseline"""<AUJOURDHUI())*("""Budget_Owner"""=$Y24)*("""Status"""<>""Validated"")*("""Status"""<>""Cancelled"")*"""Delay""")/SUMPRODUCT(("""Delay""">0)*("""Latest_Agreed_Baseline"""<AUJOURDHUI())*("""Budget_Owner"""=$Y24)*("""Status"""<>""Validated"")*("""Status"""<>""Cancelled"")*1);0)"

Si oui, je te conseille de faire ainsi
range("ab24").copy
Range("AB24:AB" & Range("AA24").End(xlDown).Row).select
Activesheet.paste
0