Conversion string en date (VBA)

Résolu

Bonjour,

J'ai une colonne Excel "échéance" dont la valeur se présente sous la forme ddMM, soit 101 pour le 01/01, 2412 pour le 24/12, etc...

Je souhaite transformer cela en date de l'année en cours (sans forcément l'afficher), afin de faire un calcul par rapport à la date du jour. 

Toutefois, je ne m'en sors pas pour la conversion. Sauriez-vous m'aider? Merci.

Détails:

Le but est de convertir cette échéance en date afin de pouvoir ensuite filtrer automatiquement à l'ouverture, les lignes ayant une échéance dans les 30 jours à compter de la date du jour.

Un CDate ou DateFormat direct ne fonctionnant pas (calcule le 10/04/1900 pour l'échéance 101), j'ai pensé à quelque chose comme cela, mais ça ne fonctionne pas (sans compter que le Left sera faux assez souvent):

Sub Auto_Open()
For c = 7 To Cells(Rows.Count, 2).End(xlUp).Row
D = Right(c, 2)
E = Left(c, 2)
CDate(Range(c) = E & "/" & D)
​​​​​​​....
Next c
End Sub

Windows / Chrome 107.0.0.0

2 réponses

  1. Bonjour

    Essaies ceci ta "date" étant de type entier

    Public Function cvdate(d As Integer) As Date
    Dim j As Long, m As Long, a As Long, cvd As String
    a = Year(Date)
    m = d Mod 100
    j = d \ 100
    cvd = CDate(j & "/" & m & "/" & a)
    cvdate = cvd
    End Function

    ou ceci, la date étant de type texte

    Public Function cvsdate(d As String) As Date
    Dim j As Long, m As Long, a As Long, cvd As String
    a = Year(Date)
    m = Right(d, 2)
    j = Left(d, Len(d) - 2)
    cvd = CDate(j & "/" & m & "/" & a)
    cvsdate = cvd
    End Function

    Cdlmnt

    1. Bonjour,

      Et merci.

      Cela m'embête un peu que ce soit une fonction, mais ça fonctionne.

      Cdt.

      1. Cela m'embête un peu que ce soit une fonction

        Tu peux te contenter de récupérer la partie de la fonction qui fabrique la date pour l'intégrer à ton code.

        RQ. ça vaut toujours le coup de fabriquer un outil (ici une fonction) même si on ne doit l'utiliser qu'une fois !

        Bon après midi