VBA Bug enregistrement macro
actaris51
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
melanie1324 -
melanie1324 -
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
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:
- VBA Bug enregistrement macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
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)
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)
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
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
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
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