Date au format jjmmaaa (sans séparateur)

Résolu/Fermé
areskip Messages postés 2 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 4 février 2014 - 4 févr. 2014 à 14:53
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 4 févr. 2014 à 18:48
Bonjour à tous,

je suis bien bloqué avec des dates au format jjmmaaaa sans aucun séparateur.
Comment faire pour les transformer en date valide dans VBA ?
J'ai bien essayé en découpant en petit morceaux pour y intercaler des /, mais peut être existe t-il une méthode plus simple ?

merci d'avance si vous avez une idée,!

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
4 févr. 2014 à 16:13
Bonjour,

voici une possibilité :

date_valide = CDate(Mid(jjmmaaaa, 3, 2) & "/" & Mid(jjmmaaaa, 1, 2) & "/" & Mid(jjmmaaaa, 5, 4)) 


La variable jjmmaaaa contient la fameuse date. Il faut penser qu'en vba c'est un format anglais et donc les jours et les mois sont inversés.
Peut-être qu'avec l'instruction Format() il y a d'autres possibilités
0
areskip Messages postés 2 Date d'inscription mardi 4 février 2014 Statut Membre Dernière intervention 4 février 2014
Modifié par areskip le 4/02/2014 à 16:57
Merci pilas31 !

J'ai du adapter car le zéro des jours ne s'affiche pas (1 et pas 01).

Ça donne ça :

size = Len(Cells(i, j))
If size = 8 Then date_valide = CDate(Left(Cells(i, j), 2) & "/" & Mid(Cells(i, j), 3, 2) & "/" & Right(Cells(i, j), 4))
If size = 7 Then date_valide = CDate(Left(Cells(i, j), 1) & "/" & Mid(Cells(i, j), 2, 2) & "/" & Right(Cells(i, j), 4))

Mais il y a peut être plus simple en affichant le premier zéro...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
4 févr. 2014 à 18:48
bonjour
avec la formule de Pilas31 que je salue
peut-^tre
jjmmaaaa = "04062014"
With Range("A1")
.Value = CDate(Mid(jjmmaaaa, 3, 2) & "/" & Mid(jjmmaaaa, 1, 2) & "/" & Mid(jjmmaaaa, 5, 4))
.NumberFormat = "dd/mm/yyyy"
End With
0