Microsoft 365 Problèmes apres importation de données externes

Mickael25

XLDnaute Nouveau
Bonjour a vous,
je n'ai pas l'habitude de demander de l'aide sur les forums mais la, en presque 20 ans sur Excel, je pêche ;)
j'imagine que c'est un truc bêtes mais bon, voila, j'implore votre aide :)

j'importe dans un doc excel (que j'appel HeuresReel) une autre feuille excel tout bête (Que j'appel mon Dashboard) avec qq champs (Date, Heure début, Heure fin, temps de pause, etc...)
je mouline le fichier avec Power query, j'ajout qq champs tout aussi bête (j'extrait le moi, année, num semaine et tout un tas de bêtises comme ça) et voila, les données sont dans mon Dashboard, la rien de compliqué.

Le problème qui se présente est le suivant; dans mes calcul, il se trouve que j'ai des calcul d'heure qui ont un résultat, parfois négatif. pour palier a ce problème (car j'ai pour résultat des #######), j'ai donc activé l'option avancé (Utiliser le calendrier depuis 1904) et la, tout fou le camps !

des que j'active cette option, toutes les dates prennent +4 ans (alors que dans mon fichier d'origine, pas de soucis, elles sont a la bonne date !!

Si qq1 a une solution a ce problème, je suis preneur car la, j m'arrache les cheveux (heureusement, pour un gars de 40 ans, j'en ai encore plein et j'aimerais les garder ;) )

Merci a vous

Mickael
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Soustraire dans le fichier en dates 1904, le 2/1/1908 de toutes les dates provenant d'autre classeur.
Exemple :
fichier source (non 1904) date du jour 28/01/2023
fichier destination (calendrier 1904) en a1 après importation brute : 29/01/2027
en B1 formule : = A1-DATE(1908;1;2)

Ou en power query en admettant que la colonne de dates importées se nomme "Column1" , ajouter l'étape de transformation suivante :
Table.TransformColumns(#"Type modifié",{{"Column1", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}})
C'est dans power query qu'elles apparaîtront erronées mais dans excel (en calendrier 1904) la correction s'opèrera automatiquement
 

Rrradassse

XLDnaute Junior
Bonjour,

Soustraire dans le fichier en dates 1904, le 2/1/1908 de toutes les dates provenant d'autre classeur.
Exemple :
fichier source (non 1904) date du jour 28/01/2023
fichier destination (calendrier 1904) en a1 après importation brute : 29/01/2027
en B1 formule : = A1-DATE(1908;1;2)

Ou en power query en admettant que la colonne de dates importées se nomme "Column1" , ajouter l'étape de transformation suivante :

C'est dans power query qu'elles apparaîtront erronées mais dans excel (en calendrier 1904) la correction s'opèrera automatiquement

Bonjour,

J'ai le même problème!

Dans l'outil de transformation power query, mes dates sont bien en 2023, mais le tableau issu de cette query ca affiche 2027 (mon fichier a l'option dates à partir de 1904 cochée car j'ai besoin de comptes d'heures négatifs)


dans ma query :
1685616050913.png



et dans mon tableau une fois chargé :
image


c'est vraiment chelou ><

est-ce que vous pourriez svp 'indiquer quel est le type de transformation a faire dans query ? Je ne comprend pas votre formule et ne sais pas comment l'appliquer chez moi
 

Cousinhub

XLDnaute Barbatruc
Bonjour,
Ta colonne Date est en type "n'importe lequel" ou "datetime"
Il faut d'abord passer cette date en type "Date", puis ajouter la commande postée par @Hasco
Un truc dans le genre :

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
    LaDate = Table.TransformColumns(#"Type modifié",{{"Date", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}})
in
    LaDate

Mais avec un fichier exemple, ça aurait pu être plus simple...
Bonne apm
 

Rrradassse

XLDnaute Junior
non on voit sur l'image, c'est du datetime (avec l'icône du petit calendrier dans Query)

j'ai essayé d'intégrer la ligne de commande de @Hasco : dans let j'ai ajouté :
PowerQuery:
#"1904_date" = Table.TransformColumns(#"Type modifié",{{"Date", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
#"1904_Day_date" = Table.TransformColumns(#"Type modifié",{{"day", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
, mais depuis ma query tourne dans le vide. Comme j'ai inséré ces lignes au milieu de mes query (là ou j'ai pensé que ca avait sa place), j'ai laissé in en correspondance avec la dernière ligne (mais e ne suis aps coutumière du code brut, et si ca se trouve il faut que je mette d'autres choses dans le in de la fin?)

Et j'aimerais vraiment savoir à quoi correspond cette action (en termes de transformation)
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re-,
Est-ce que tu as bien modifié en "date" les 2 colonnes citées dans ta dernière?
Si non, je te conseille de mettre ces 3 lignes en fin de code, juste avant le "in"
Et après le "in", de mettre la dernière étape (ici, le #"1904_Day_date")

PowerQuery:
let
   Tout ton code précédent
    #"Type modifié" = Table.TransformColumnTypes("étape précédente",{{"Date", type date},{"day", type date}}),
    #"1904_date" = Table.TransformColumns(#"Type modifié",{{"Date", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
#"1904_Day_date" = Table.TransformColumns(#"1904_date",{{"day", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
 
in
    #"1904_Day_date"

Réalisé sans filets, car sans fichier....
 

Rrradassse

XLDnaute Junior
a quoi sert le "in" exactement ?
Je pige au fur et a mesure (en effet j'avais pas changé l'étape précédente dans mon 1er test, mais maintenant que je le fais, la colonne Date affiche rien dans le tableau resultat alors qu'elle passe en 2019 dans power Query, et Day semble marcher, mais comme j'ai 6 ou 7 champs a modifier, je voudrais comprendre ce qui ne va pas avant de toucher a tout)
Voila mon texte en entier :

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="T_MRS"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Employee", type text}, {"Date", type datetime}, {"Day Off?", type text},
    {"Week n°", Int64.Type}, {"Month", Int64.Type}, {"Morning", type number}, {"Lunch From", type number}, {"Lunch To", type number},
    {"Evening", type number}, {"Office Hours", type any}, {"Week", type number}, {"Month2", type number}, {"Project", type text},
    {"Description", type text}, {"Duration decimal", Int64.Type}, {"Duration hours", type number}, {"Project-Man-Day", type number}}),
    #"Requête ajoutée" = Table.Combine({#"Type modifié", Q_ILB}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Requête ajoutée",{{"day", type date}}),
    #"Requête ajoutée1" = Table.Combine({T_MRS, Q_ILB}),
    #"Requêtes fusionnées" = Table.NestedJoin(#"Requête ajoutée1", {"Date"}, Q_Calendrier, {"Calendrier"}, "T_Calendrier",
    JoinKind.RightOuter),
    #"T_Calendrier développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "T_Calendrier", {"Calendrier", "Date_Calendrier", "n°Jour_sem", "aujourdhui ", "Day type", "Week End"}, {"T_Calendrier.Calendrier", "T_Calendrier.Date_Calendrier", "T_Calendrier.n°Jour_sem", "T_Calendrier.aujourdhui ", "T_Calendrier.Day type", "T_Calendrier.Week End"}),
    #"Colonnes renommées" = Table.RenameColumns(#"T_Calendrier développé",{{"T_Calendrier.aujourdhui ", "T_Calendrier.(dernièreMAJ)"}}),
    #"Lignes triées" = Table.Sort(#"Colonnes renommées",{{"T_Calendrier.Date_Calendrier", Order.Ascending}}),
    #"Colonne conditionnelle ajoutée" = Table.AddColumn(#"Lignes triées", "Day off?", each if [#"Day Off?"] <> null then [#"Day Off?"] else [T_Calendrier.Week End]),
    #"1904_date" = Table.TransformColumns(#"Colonne conditionnelle ajoutée",{{"Date", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
    #"1904_Day_date" = Table.TransformColumns(#"1904_date",{{"day", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"1904_Day_date",{"Employee", "Date", "day", "Day off?",
    "Day Off?", "Week n°", "Month", "Morning", "Lunch From", "Lunch To", "Evening", "Office Hours", "Week", "Month2",
    "Project", "Description", "Duration decimal", "Duration hours", "Project-Man-Day", "nota", "hours/day", "matin",
    "T_Calendrier.Calendrier", "T_Calendrier.Date_Calendrier", "T_Calendrier.n°Jour_sem", "T_Calendrier.(dernièreMAJ)",
    "T_Calendrier.Week End"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes permutées",{"Day Off?", "T_Calendrier.Week End"})
in
    #"Colonnes supprimées"
 

Cousinhub

XLDnaute Barbatruc
Re-,
Tu n'as pas bien lu mes précédentes interventions...
Il faut que les colonnes "Date" et "day" soient typées en "date"
Tu peux le faire dès le début pour la colonne "Date" ainsi : (je pense que la colonne "day" provient de la requête Q_ILB)
Dans la 2ème ligne, j'ai mis {"Date", type date} (au lieu de datetime
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="T_MRS"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Employee", type text}, {"Date", type date}, {"Day Off?", type text},
    {"Week n°", Int64.Type}, {"Month", Int64.Type}, {"Morning", type number}, {"Lunch From", type number}, {"Lunch To", type number},
    {"Evening", type number}, {"Office Hours", type any}, {"Week", type number}, {"Month2", type number}, {"Project", type text},
    {"Description", type text}, {"Duration decimal", Int64.Type}, {"Duration hours", type number}, {"Project-Man-Day", type number}}),
    #"Requête ajoutée" = Table.Combine({#"Type modifié", Q_ILB}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Requête ajoutée",{{"day", type date}}),
    #"Requête ajoutée1" = Table.Combine({T_MRS, Q_ILB}),
    #"Requêtes fusionnées" = Table.NestedJoin(#"Requête ajoutée1", {"Date"}, Q_Calendrier, {"Calendrier"}, "T_Calendrier",
    JoinKind.RightOuter),
    #"T_Calendrier développé" = Table.ExpandTableColumn(#"Requêtes fusionnées", "T_Calendrier", {"Calendrier", "Date_Calendrier", "n°Jour_sem", "aujourdhui ", "Day type", "Week End"}, {"T_Calendrier.Calendrier", "T_Calendrier.Date_Calendrier", "T_Calendrier.n°Jour_sem", "T_Calendrier.aujourdhui ", "T_Calendrier.Day type", "T_Calendrier.Week End"}),
    #"Colonnes renommées" = Table.RenameColumns(#"T_Calendrier développé",{{"T_Calendrier.aujourdhui ", "T_Calendrier.(dernièreMAJ)"}}),
    #"Lignes triées" = Table.Sort(#"Colonnes renommées",{{"T_Calendrier.Date_Calendrier", Order.Ascending}}),
    #"Colonne conditionnelle ajoutée" = Table.AddColumn(#"Lignes triées", "Day off?", each if [#"Day Off?"] <> null then [#"Day Off?"] else [T_Calendrier.Week End]),
    #"1904_date" = Table.TransformColumns(#"Colonne conditionnelle ajoutée",{{"Date", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
    #"1904_Day_date" = Table.TransformColumns(#"1904_date",{{"day", each Date.AddDays( _,-Number.From( #date(1904,1,1))), type date}}),
    #"Colonnes permutées" = Table.ReorderColumns(#"1904_Day_date",{"Employee", "Date", "day", "Day off?",
    "Day Off?", "Week n°", "Month", "Morning", "Lunch From", "Lunch To", "Evening", "Office Hours", "Week", "Month2",
    "Project", "Description", "Duration decimal", "Duration hours", "Project-Man-Day", "nota", "hours/day", "matin",
    "T_Calendrier.Calendrier", "T_Calendrier.Date_Calendrier", "T_Calendrier.n°Jour_sem", "T_Calendrier.(dernièreMAJ)",
    "T_Calendrier.Week End"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Colonnes permutées",{"Day Off?", "T_Calendrier.Week End"})
in
    #"Colonnes supprimées"

PS, ceci sera ma dernière intervention sans fichier joint, et si tu n'ouvres pas un nouveau fil. Il n'est pas conseillé de "squatter" le fil d'une autre personne (qui reçoit sans doute une multitude de mails de la part du site, pour lui dire que sa question a reçu des réponses.....)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 204
Membres
103 157
dernier inscrit
youma