IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplir en colonne des dates tous les 3 mois


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut Remplir en colonne des dates tous les 3 mois
    Bonjour,

    J'ai en colonne des dates: la première c'est celle du jour,
    La 2é c'est celle de mon prochain paiment de coupon (il s'agit d'une obligation), et j'aimerais ensuite que ma macro calcule les prochaine dates, qui tombent tous les 3 mois, et que ça s'arrête pile le jour de la maturité (connu à lavance et renseigné par l'utilisateur).
    J'ai fait tourné l'éditeur de macro:

    .DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlMonth, Step:=3, Trend:=False

    Mais je n'arrive pas à le faire fonctionner, car je ne sait pas quoi mettre avant le ".dataseries".

    Voici le début de mon code:

    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
    22
    23
    24
    25
    Sub calcul_bond()
     
    Dim tablo_dates() As Date
    Dim tablo_interests(), tablo_notional() As Variant
    Dim sommeCF As Range
    Dim i, j, h, s, t As Integer
    Dim borne_date As Long
    Dim echeance As Date
    Dim allin, datesrange As Range
     
    Set allin = Sheets("Sheet1").Range("B2")
    Sheets("Sheet1").Range("B2").Name = "all_in"
     
    ' ///// calcul des dates
    ReDim Preserve tablo_dates(1)
        tablo_dates(0) = Sheets("Sheet1").Range("A1").Value 'la date d'aujourd'hui + 12
        tablo_dates(1) = Range("next_payment")
     
     
        i = WorksheetFunction.Days360(tablo_dates(0), Range("maturity")) / 90
        i = WorksheetFunction.Round(i, -1)
        Set datesrange = Sheets("Sheet1").Range(Cells(4, 3), Cells(i + 2, 3))
        datesrange.DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlMonth, Step:=3, Trend:=False
            ReDim Preserve tablo_dates(i + 2)
            'tablo_dates(i) = Range("maturity").Value

    Quelqu'un voit-il ce qui cloche?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Si j'ai bien compris ce que tu veux faire ? , un exemple en VBA qui ne nécessite pas les fonctions excel.

    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
    22
    23
    24
    25
    26
    27
    Sub TroisMois()
    Dim Col As Integer, Lig As Long, Num As Long
    Dim DateFin As Long, NbMois As Integer
    Dim DT As Long
    '------------------------------------------------
    'Pour l'exemple
    Col = 4 'colonne D
    Lig = 3 'ligne où se trouve la date de départ.
    'Dans la cellule D3 la date de départ.
    'Dans la cellule E3 le nombre de mois (3)
    'Dans la cellule F3 le nombre d'année (5)
    '------------------------------------------------
        With Sheets("Feuil1") 'adapter le nom de la feuille
            NbMois = .Cells(Lig, Col + 1)
            DateFin = DateSerial(Year(.Cells(Lig, Col)) + .Cells(Lig, Col + 2), Month(.Cells(Lig, Col)), Day(.Cells(Lig, Col)))
            DT = DateSerial(Year(.Cells(Lig, Col)), Month(.Cells(Lig, Col)) + NbMois, Day(.Cells(Lig, Col)))
            While DT < DateFin
                Lig = Lig + 1: Num = Num + 1
                .Cells(Lig, Col - 2) = Num
                .Cells(Lig, Col - 1) = CDate(DT)
                DT = DateSerial(Year(DT), Month(DT) + NbMois, Day(DT))
            Wend
            .Cells(Lig, Col - 2) = "maturité"
            .Cells(Lig, Col - 1) = CDate(DT)
        End With
     
    End Sub
    Je n'ai pas bien compris comment la "date fin" était renseignée.
    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut Merci
    La date de fin est l'échéance de mon obligation et j'aimerais que l'utilisateur la renseigne à partir d'un formulaire (en projet!)

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    En général une obligation n'est pas renseignée avec une date de fin mais un temps pour l'échéance ? 3 ans .. 5 ans.. etc.
    C'est comme ça que j'ai prévu le code dans mon poste précédant.
    A+

Discussions similaires

  1. récupérer la date tous les 7 jours
    Par noakiss dans le forum ASP.NET
    Réponses: 12
    Dernier message: 15/04/2008, 08h41
  2. Format des dates et les langues
    Par p'tite Sandrine dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2007, 12h28
  3. Réponses: 1
    Dernier message: 06/03/2007, 12h25
  4. Réponses: 2
    Dernier message: 28/02/2007, 13h13
  5. Réponses: 3
    Dernier message: 23/03/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo