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 :

Borner des dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 48
    Par défaut Borner des dates
    Bonjour à tous,

    Je souhaiterais borner des dates (dans le but ensuite de faire des interpolations et calculs forwards). Je m'explique : j'ai dans une colonne (A) une liste de dates, à chaque date son taux (colonne B) et je dispose de dates d'échéances. Pour chaque date d'échéance je dois calculer son taux par interpolation et pour cela borner cette fameuse date avec celles dont je dispose dans ma colonne A.
    Exemple : date d'échéance 22/01/2013
    colonne A
    08/01/2013
    09/01/2013
    12/01/2013
    12/02/2013
    Je dois donc prendre 12/01/2013 et 12/02/2013 pour borner et faire mon interpolation.
    Comment faire pour programmer automatiquement tout ceci ? Je pensais en premier lieu à faire un code calculant la différence entre ma maturité et chaque dates disponibles (et ne prendre que le minimum si cette différence est positive) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With sheets("feuil1")
        Set plage_date = Range(.[A3], [A3].End(xlDown))
              For Each cell In plage_date
                  If (CDate(date_échéance) - CDate(Active.cell)) > 0 Then
                  diff = (CDate(date_échéance) - CDate(Active.cell))
    ... et prendre ensuite le minimum des valeurs trouvées en les stockant dans un tableau..(je trouverais la borne inférieure et la borne supérieure serait la date suivante) mais je n'arrive pas à trouver la "bonne syntaxe" et je pense qu'il y a mieux...

    Si quelqu'un peut m'éclairer sur tout cela,
    Merci à tous

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si tes dates sont triées de la plus ancienne à la plus récente, pour connaitre la borne supérieure il te suffit effectivement de relever l’adresse de la première cellule qui retournera une différence positive, la borne inférieure étant la cellule précédente.
    Cependant, tu ne dis pas quel traitement tu effectues dans le cas où l’échéance correspond exactement à une date de la liste.

    Cordialement.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Peut être une piste avec le code suivant
    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 aa()
    Dim S As Worksheet
    Dim R As Range
    Dim C As Range
    Dim date_échéance As Date
    Dim inf As Date
    Dim egal As Date
    Dim sup As Date
    Dim A$
    Set S = Sheets("Feuil1")
    date_échéance = S.[b1]  'à adapter (pour tester, j'ai pris la cellule B1)
    Set R = S.Range("a3:a" & S.[A3].End(xlDown).Row)
    For Each C In R
      If date_échéance > C Then inf = C
      If date_échéance = C Then egal = C
      If date_échéance < C Then
        sup = C
        Exit For
      End If
    Next C
    If inf > 0 Then A$ = "Borne inférieure : " & inf & vbCrLf
    If egal > 0 Then A$ = A$ & "Une date correspondant à l'échéance a été trouvée : " & egal & vbCrLf
    If sup > 0 Then A$ = A$ & "Borne supérieure : " & sup & vbCrLf
    MsgBox A$
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 48
    Par défaut
    Re,

    merci à vous pour vos réponses si rapides.

    PMO2017 : je vais voir si je peux adapter ce code à mon projet, en tout cas il marche parfaitement bien merci !

    gFZT82 : effectivement je n'avais pas traité le cas où la date d'échéance existe dans la liste. Dans ce cas là, le calcul de l'interpolation qui suit est inutile, je prends directement le taux correspondant à la date d'échéance dans la liste.

    Je reviens sur le sujet sans tarder, merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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