Conversion string en date (VBA)

Résolu/Fermé
Adranix - 2 nov. 2022 à 15:34
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 - 3 nov. 2022 à 15:21

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

ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié le 2 nov. 2022 à 19:47

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

Bonjour,

Et merci.

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

Cdt.

0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
3 nov. 2022 à 15:21

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