Microsoft 365 Excel avec quelques dates folkloriques

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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?
 
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:
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

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:
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

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:
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour