Microsoft 365 Excel avec quelques dates folkloriques

Sissou71

XLDnaute Occasionnel
Bonjour,

Je reçois une extraction d'un tableau issu d'un Access tous les trimestres. Malheureusement dans cette extraction j'ai des dates au format JJ/MM/AAAA et d'autres à un format surement texte qui ressemble à du M/JJ/AAAA et d'autres avec M/JJ/AAAA des heures et PM ou AM. Pourtant l'extraction vient du même access.

J'essaye de réparer les dates qui ne sont pas au format JJ/MM/AAAA sans casser celles qui le sont et j'ai beau essayer tout ce que je trouve sur internet comme solution, rien ne marche.
Je vous joins un exemple Excel si quelqu'un a une idée :)
Bien à vous
Cécile
 

Pièces jointes

  • Excel PB Dates.xlsx
    26.2 KB · Affichages: 9

Dudu2

XLDnaute Barbatruc
Bonjour,
La vraie question est: toutes les dates sont-elles en format anglo-saxon ?
Moi je dirais que oui malgré certaines dates dont on pourrait croire qu'elles sont en JJ/MM/AAAA mais sans doute en format MM/JJ/AAAA car dans un fichier je ne vois pas la raison d'avoir un format anglo-saxon et un format français?
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je suis du même avis que Dudu2. 😉

En fait ce qu'il faudrait, c'est voir le fichier source avant importation dans Excel pour vérifier, mais toutes les dates doivent y être en mm/dd/yyyy.

Ce serait donc lors de l'importation qu'il faudrait agir pour que toutes les dates soient importées au même format.



[edit]
Ce que j'ai écrit, c'est au cas où il y a un fichier exporté d'Access, puis importé dans Excel.
Si l'exportation depuis Access crée directement le fichier Excel, c'est différent.
[/edit]
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous importer comment ?
Vous avez excel 365, utilisez power query.
Sans la source de données, difficile de vous aider davantage pour l'import

Voici une formule 365 qui récupère la date de C
=LET(
Dte;GAUCHE(C2;TROUVE(" ";C2)-1);
Slash1;TROUVE("/";Dte);
Slash2;TROUVE("/";Dte;Slash1+1);
SIERREUR(DATE(
DROITE(Dte;4);
GAUCHE(Dte;Slash1-1);
STXT(Dte;Slash1+1;Slash2-Slash1-1)*1);C2
))

Cordialement
 

Pièces jointes

  • Excel PB Dates.xlsx
    36.7 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Une autre proposition pour la colonne B :
Code:
=SI(ESTNUM(B2);DATE(ANNEE(B2);JOUR(B2);MOIS(B2));DATE(DROITE(B2;4);SUBSTITUE(GAUCHE(B2;2);"/";"");GAUCHE(DROITE(B2;7);2)))

Mais c'est n'importe quoi. Il faut traiter le problème lors de l'importation dans Excel, ou lors de l'exportation depuis Access.
 
Dernière édition:

vgendron

XLDnaute Barbatruc
hello

un essai par macro qui à mon sens "tombe en marche"
visiblement, toutes les données de date sont bien reconnues comme des dates.. puisqu'il n'y a aucune donnée supprimée (voir code)
MAIS: le résultat montre des dates un coup à droite de la cellule (format date bien reconnu), un coup à gauche de la cellule (il suffit de cliquer et valider pour que la date se déplace à droite..
 

Pièces jointes

  • Excel PB Dates.xlsm
    37.1 KB · Affichages: 7

Sissou71

XLDnaute Occasionnel
Finalement j'ai eu le responsable du fichier Access, il copie les données qui sont dans la table Access qui m'intéresse, les colle sous Notepad et ensuite les colle dans Excel. Dans notre entreprise nous accédons aux applications sur un Citrix et on pense que c'est le Access de ce citrix qui est paramétré comme cela et ca nous ne pourrons pas le changer. Depuis le passage sur Citrix on ne peut plus coller des données d'Access vers Excel on est obligé de passer par un notepad
 
Dernière édition:

Sissou71

XLDnaute Occasionnel
Dans ce cas, il vaut mieux qu'il t'envoie le fichier .txt pour que tu puisses faire l'importation correctement. 😉

En plus, ça lui fera une étape en moins, donc moins de travail pour lui.
Et pour toi ce sera plus simple.
Il n'y a pas de fichier txt, il ouvre une table et il copie puis colle. C'est un vieil access qu'on doit abandonner au profit d'un JIRA mais en attendant on utilise ce viel access
 

vgendron

XLDnaute Barbatruc
hello
avec une correction de la macro
je ne récupère que des dates au bon format.
VB:
Sub convertirdate()
Dim TabData() As Variant

With ActiveSheet
    TabData = .UsedRange.Value
End With
For i = LBound(TabData, 1) + 1 To UBound(TabData, 1)
    For j = LBound(TabData, 2) + 1 To UBound(TabData, 2)
        If IsDate(Trim(TabData(i, j))) Then
            TabData(i, j) = CDate(TabData(i, j))
        Else
            TabData(i, j) = IIf(TabData(i, j) <> "", "data Supprimée", TabData(i, j)) 'si le contenu n'est pas reconnu comme date, on remplace par un texte pour éventuellement tracer les pbs
        End If
    Next j
Next i
With Sheets("Données traitées")
    .Cells.Clear
    .Range("A1").Resize(UBound(TabData, 1), UBound(TabData, 2)).FormulaR1C1 = TabData
    .Range("B1").Resize(UBound(TabData, 1), UBound(TabData, 2) - 1).NumberFormat = "dd/mm/yyyy"
End With
End Sub
 

Discussions similaires

Réponses
20
Affichages
2 K
Réponses
5
Affichages
1 K
Réponses
3
Affichages
2 K

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 678
dernier inscrit
arno12345678