Power Query format de date

Bonjour,
Merci de m'avoir accepté dans ce forum, de votre disponibilité et votre sens de partage de la connaissance.

Je suis confronté à un problème de typage de date dans mes différentes colonnes de date pour lesquelles j'ai ce message [DataFormat.Error] Désolé... Nous n'avons pas pu analyser l'entrée fournie à une valeur Date.

En effet sur 9722 lignes de date seules 37 lignes contiennent des erreurs. Après vérification dans le fichier source d'Excel, j'ai remarqué le format suivant 29/02/2022 00:00:00 entrainant des erreurs différent du format du type jj/mm/aaaa qui fonctionne bien. Excel ne reconnait pas ce format comme date, ni comme 123, ni texte.

Après analyse, je me suis aperçu que 02/2022 dure 28 jours donc normalement 29/02/2022 devrait être 01/03/2023.

Comment faire pour corriger cette erreur

image image

PS: les paramètres régionaux ont été mis à jour.

Merci de votre aide.

Cordialement

Bonjour Ranson,

Quelques possibilités probablement pas exhaustives et qui pourraient être plus ciblées si la cause de l'erreur est connue :

  • Si ce n'est pas une erreur récurrente, le plus simple est de procéder par remplacement dans le fichier de base mais je pense que cette possibilité a été écartée.
  • Au niveau du tableau (structuré ?) de base : ajouter une colonne avec une formule du type "=SI(ESTNUM([@[à livrer avant]])=VRAI;[@[à livrer avant]];DATE(DROITE([@[à livrer avant]];4);STXT([@[à livrer avant]];4;2);GAUCHE([@[à livrer avant]];2)))" qui va transformer le 29/02/2022 en 01/03/2022 ou tout autre date incorrecte ("31/04/xxxx" => "01/05/xxxx", "32/04/xxxx" => "02/05/xxxx") et se baser sur cette colonne dans PQ. Intervenir en amont, au niveau du tableau présente l'avantage d'avoir une date correcte (mais est-elle exacte ?) si les données sont réutilisées dans d'autres tableaux / onglets.
  • Au niveau de PQ : Insérer une étape après l'étape "Source" et remplacer les valeurs (sous Excel 2019 : Transformer / Remplacer les valeurs) "29/02/2022" par "01/03/2022". Bof ...

Cdlt,

Cylfo

=SI(ESTNUM([@[à livrer avant]])=VRAI;[@[à livrer avant]];DATE(DROITE([@[à livrer avant]];4);STXT([@[à livrer avant]];4;2);GAUCHE([@[à livrer avant]];2)))
Cette syntaxe, je ne la comprends pas parce qu'elle ne respecte pas les arguments de SI qui sont 2. On devrait l'utiliser avec des SI imbriqués n'est ce pas?
Meme si je la comprenais, il me fallait insérer 3 colonnes pour (date de commande, à livrer avant et date d'envoi) qui comportent toutes ces anomalies.

Par contre la 2ème dans PQ marche super bien. J'ai pu les convertir à 01/03/2023.
Merci beaucoup
Bonjour Ranson,

Même si vous n'utilisez pas la formule c'est toujours mieux de comprendre.
Explication de la formule :
Pour tester j'ai créé un tableau structuré d'où le nom de la colonne "[@[à livrer avant]]" qui fait référence à la colonne "à livrer avant" dans votre copie d'écran. Si vous n'utilisez pas un tableau structuré, "[@[à livrer avant]]" est à remplacer par une référence de cellule de type A1.
La formule :
Partie test :=SI( ESTNUM( [@[à livrer avant]] ) = VRAI ; <= si la date est correcte elle est reconnue comme un numérique de type double.
Si VRAI : [@[à livrer avant] ]; <= retourne la date
Si FAUX : DATE( DROITE([@[à livrer avant]] ; 4 ) ; STXT( [@[à livrer avant]] ; 4 ; 2 ) ; GAUCHE( [@[à livrer avant]] ; 2 ) ) <= recalcule la date en extrayant les parties correspondants à l'année, le mois et le jour.
)
Cdlt,
Cylfo

Merci beaucoup.

J'ai un autre problème sur le même sujet.

PQ a extrait les erreurs lors du chargement pour en créer une requête spécifique: "Erreur T_commandes" et une requête propre "T_commandes". Or moi je voulais une requête "T_commandes" comportant des erreurs pour faire la manip suivante: remplacer les erreurs par 28/02/2023.

Je sais que je peux modifier dans la source de base excel par "remplacer par".

Et je veux laisser la base propre et modifier dans PQ, comment procédons-nous?

Merci de votre disponibilité et aide

Cordialement

Re-bonjour,

D'après votre 1ère réponse, cela semblait fonctionner ... et vous mentionnez une autre date ... Pouvez-vous envoyer votre fichier (un extrait anonymisé avec quelques lignes correctes et avec erreur) ?

Cdlt,

Cylfo

oui

je n'avais pas remarqué que cela avait créé une requête des erreurs. Donc c'était dans cette requête que j'avais pu remplacer les erreurs. Je vous mets en pièce la feuille "commande". La taille du classeur dépasse les 1,5Mo requis, comporte 12 feuilles. Les feuilles restantes sont propres.

6commercial.zip (504.02 Ko)

J'ai fait plusieurs tentatives mais je n'ai pas réussi à remplacer les valeurs. Par contre le remplacement d'erreur fonctionne, voir fichier ci-joint, l'étape "Erreurs remplacés" (Transformer" / "Remplacer les valeurs" / "Remplacer les erreurs") est à insérer après l'étape "Type modifié".

Le remplacement d'erreur remplacera toutes les erreurs par "01/03/2022" qu'elles soient liées au "29/02/2022" ou à tout autre date erronée ... donc perso, j'aurai une préférence pour l'ajout de colonnes qui rectifient les dates incorrectes et dans PQ, je me baserai sur ces colonnes. Vous conservez les données d'origine en gérant les dates erronées (voir colonnes ajoutées dans le tableau).

3commercial2.zip (1.27 Mo)

Merci beaucoup
Vous a aviez été si prompt et si dévoué à m'aider

Bonne soirée à vous

Rechercher des sujets similaires à "power query format date"