Bonjour,
J'aimerai pouvoir modifier une date de calcul sans avoir à modifier mon code vba (dans lequel j'ai saisit une date en dur)
Je m'explique, imaginons que j'ai 2 colonnes:
en colonne N, il y a une date
en colonne O, il y a une fonction SI, qui me dit si la date est inférieur à la date d'aujourd'hui, (en affichant "MATURED" ou "ALIVE")
N = date: yyyy/mm/dd
O = If(A<="asof_date(", "MATURED","ALIVE") <= je le fait en VBA
Dans mon code VBA, j'ai saisit en dur une date (ex:31/12/2013).
Mais ce que j'aimerai c'est pouvoir saisir une date directement dans excel (ex: en lui attribuant le nom "asof_date)
- le code vba irait voir dans la cellule "asof_date" la date saisit, et la mettrait directement dans le formule de la colonne O.
ça marche en excel, mais en VBA ça ne fonctionne, ça me met que toutes mes positions sont maturées, même celles qui sont en vie (ou inversement).
Avec la macro ci-dessous: ça marche, mais je voudrais pouvoir saisir la date dans mon excel, dans la cellule que je nomme "asof_date": (au lieu d'avoir une date en dur dans mon vba)
Pouvez vous m'aider, voici ma tentative en vba ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sheets("sheet1").Select Range("O2").Select ActiveCell.FormulaR1C1 = "=IF(RC[-2]<=""2013/12/31"", ""MATURED"",""ALIVE"")" Selection.Copy Range("O2").Select Selection.Copy Range("N2").Select Selection.End(xlDown).Select ActiveCell.Offset(0, 1).Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste
Sub AAA()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Dim asof_date As Date Sheets("to automate").Select 'ancienne formule ''ActiveCell.FormulaR1C1 = "=IF(RC[-2]<=""2013/12/31"", ""MATURED"",""ALIVE"")" Range("L2").Select Application.Goto Reference:="asof_date" Range("O2").Select strValue = "[AsOfDate].[AsOfDate].&[" & Format(asof_date, "yyyymmdd") & "]" ActiveCell.FormulaR1C1 = _ "=IF(RC[-1]<""asof_date"", ""MATURED"",""ALIVE"")" Range("O2").Select Selection.Copy Range("N2").Select Selection.End(xlDown).Select ActiveCell.Offset(0, 1).Select Range(Selection, Selection.End(xlUp)).Select ActiveSheet.Paste End Sub
Merci de votre aide
vincent
Partager