Conversion string en date (VBA)

Résolu
Adranix -  
ccm81 Messages postés 11033 Statut Membre -

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. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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

    0
  2. Adranix
     

    Bonjour,

    Et merci.

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

    Cdt.

    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       

      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

      0