Microsoft 365 Convertir du texte en format date

Elfinols

XLDnaute Nouveau
Bonjour à tous,
Je récupère des logs d'une machine, fichier csv. J'ai une colonne qui représente des dates mais sous forme de texte (enfin je pense) que je souhaite mettre en date afin de pouvoir trier par ordre chronologique.
Comme vous pourrez voir dans le fichier joint les date sont au format :
Mois/jour/année heure:minute:seconde AM ou PM
Et ce qui est rigolo c'est que les mois et jours peuvent être sur 1 ou 2 digits et les heures au format anglais ...

Voilà, je suis preneur de toute solution, formules ou macro.
Merci à vous.
 

Pièces jointes

  • Classeur1.xlsx
    12.4 KB · Affichages: 9
Solution
RE à tous

Avec 2013 :
Données, A partir de texte, sélectionner le fichier puis choisir largeur fixe.
A l'étape 3 de l'import déclarer le format date en MJA

On obtient une colonne date et une colonne heure que l'on peut additionner pour retrouver les 2 infos dans une colonne unique si nécessaire.
ExitTime.jpg

Elfinols

XLDnaute Nouveau
Merci, mais en fait je m'aperçois que ce n'est pas Excel 365 que j'ai au boulot mais Excel 2013 avec un compte 365 ... c'est pas pareil ... donc je n'ai pas onglet Données, Récupérer et transformer.
Si vous connaissez pour Excel 2013 ?
 

Arthur931

XLDnaute Nouveau
Bonjour,

Je ne me suis pas amusé à faire les heures, mais je pense que ceci fonctionne pour la partie date.
Tu peux appliquer le même principe avec les heures si cela est utile pour toi.

Dans ma formule ta date issue de csv est en cellule A1.

Ce n'est probablement pas "optimal" mais cela fonctionne chez moi...

Bon courage,

La fameuse :
=DATE(STXT(A1;TROUVE(" ";A1;4)-2;2)&"20";GAUCHE(A1;TROUVE("/";A1;1)-1);STXT(A1;TROUVE("/";A1;1)+1;TROUVE("/";A1;1+TROUVE("/";A1;1))-TROUVE("/";A1;1)-1))
 

job75

XLDnaute Barbatruc
Bonjour Elfinols, chris, Arthur931,

Pour convertir les données vous pouvez utiliser cette macro :
VB:
Sub Convertir()
Dim tablo, i&, t, s
With Feuil1 'CodeName, à adapter
    tablo = .[A1].CurrentRegion.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(tablo)
        t = Trim(Replace(Replace(t, "AM", ""), "PM", ""))
        s = Split(t, "/")
        If UBound(s) = 2 Then t = s(1) & "/" & s(0) & "/" & s(2)
        If IsDate(t) Then tablo(i, 1) = CDate(t)
    Next
    '---restitution---
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    .[A1].Resize(UBound(tablo)) = tablo
End With
End Sub
A+
 

Pièces jointes

  • Convertir(1).xlsm
    21.4 KB · Affichages: 9

chris

XLDnaute Barbatruc
RE à tous

Avec 2013 :
Données, A partir de texte, sélectionner le fichier puis choisir largeur fixe.
A l'étape 3 de l'import déclarer le format date en MJA

On obtient une colonne date et une colonne heure que l'on peut additionner pour retrouver les 2 infos dans une colonne unique si nécessaire.
ExitTime.jpg
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 516
Membres
112 765
dernier inscrit
SIDIANW