Probleme codage pour additionner deux dates

gustwo

XLDnaute Nouveau
Bonjour a tous,

Voila j essais de faire un pricer obligation mais j ai un gros problème je suis bloqué (du fait de mon faible niveau):

Details :

J ai cree un formulaire (celui ci fonctionne tres bien), ses valeurs sont directement ajoutée au cellule .

J aimerais maintenant utilisé une de ces valeurs dans un module :
Mon code qui ne fonctionne pas :

Sub PricerAnnuel()
Dim L As Integer
Dim NLign As Integer
Dim MyDateCoupon() As Date

'Calcul des dates de coupons

ThisWorkbook.Worksheets("VBA").Select
ActiveSheet.range("A3").Select

'La valeur de la cellule A3 est la valeur qui va me servir pendant tout le codage

MyDateCoupon(0) = range("A3") 'pour L = 0 CA NE FONCTIONNE PAS BIEN SUR, C'est une date du genre 05/01/2011

For L = 1 to NLign
If MyDateCoupon (L) <> range("L12") then
MyDateCoupon (L) =MyDateCoupon(L-1) + 2 mois 'JE NE SAIS PAS COMMENT CODER
else
end if

End Sub

J espere que quelqu'un d'entre vous pourra m aider

Merci d avance

Tom
 

Pièces jointes

  • Pricer VBA obligations1.zip
    32.1 KB · Affichages: 36

Dranreb

XLDnaute Barbatruc
Re : Probleme codage pour additionner deux dates

Bonjour
Il y a au moins ça déjà:
VB:
MyDateCoupon (L) = DateSerial(Year(MyDateCoupon(L-1)), Month(MyDateCoupon(L-1)) + 2, Day(MyDateCoupon(L-1)))
Mais attentions aux 30 et 31: peuvent donner 1 ou 2 un mois plus loin.
Cordialement.

Bonjour Jp14
 
Dernière édition:

gustwo

XLDnaute Nouveau
Re : Probleme codage pour additionner deux dates

Merci pour votre aide mais j ai quelques soucis

Sub PricerAnnuel()
Dim L As Integer
Dim NLign As Integer
Dim MyDateCoupon() As Date

'Calcul des dates de coupons
ThisWorkbook.Worksheets("VBA").Select
ActiveSheet.range("A3").Select

MyDateCoupon(0) = range("A3") ' L'indice n'appartient pas a la selection
For L = 1 To NLign Step 1
If MyDateCoupon(L) <> range("L12") Then
MyDateCoupon(L) = DateAdd("m", 12, "MyDateCoupon(L - 1)")
Else
End If
Next L

End Sub

Deuxieme probleme, je veux que Nlign s'arrete des que MydateCoupon = range("L12")

Merci beaucoup
 

jp14

XLDnaute Barbatruc
Re : Probleme codage pour additionner deux dates

Bonjour
Bonjour Dranreb

Pour éviter les erreurs de syntaxe il faut vérifier si la valeur qui se trouve dans la cellule est conforme au type souhaité
Dim MyDateCoupon() As Date

If isdate(Range("A3")) then MyDateCoupon(0) = range("A3")
Il ne faut pas oublier de définir la dimension du tableau soit avec "Redim" soit au niveau de la déclaration.

JP
 

gustwo

XLDnaute Nouveau
Re : Probleme codage pour additionner deux dates

Pouvez vous tester mon code svp j ai des petits soucis

Sub PricerAnnuel()
Dim L As Integer
Dim NLign As Integer
Dim MyDateCoupon() As Date

'Calcul des dates de coupons
ThisWorkbook.Worksheets("VBA").Select
ActiveSheet.range("A3").Select

ReDim MyDateCoupon(0 To NLign)

MyDateCoupon(0) = range("A3").Value

NLign = year(range("L12")) - year(range("A3"))

For L = 1 To NLign Step 1

If MyDateCoupon(L) <> range("L12").Value Then
MyDateCoupon(L) = DateAdd("m", 12, "MyDateCoupon(L - 1)")
Else
End If
Next L

'Ecriture des données
ThisWorkbook.Worksheets("VBA").Select
ActiveSheet.range("A3").Select
For L = 1 To NLign Step 1
ActiveCell.Offset(L, 0).Value = MyDateCoupon(L)
Next L
End Sub

Je joins mon fichier, mon code est dans mon formulaire et il appelle certaines fonctions des modules.

Merci Merci
 

Pièces jointes

  • Pricer VBA obligationsfinal.zip
    34 KB · Affichages: 30

Discussions similaires

Statistiques des forums

Discussions
312 520
Messages
2 089 286
Membres
104 087
dernier inscrit
falconbe