Microsoft 365 Power Query

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 !

jlbcall

XLDnaute Occasionnel
Bonjour à toutes et à tous

J'ai besoin de transformer des valeurs en formats Heures comme dans l'image ci contre :
1739435532546.png

Certaines colonnes sont avec des formats H au lieu des : quand je veux remplacer en format heures dans power Query les cellules supérieures à 23:59 se mettent en erreurs. Je dois absolument faire ces modifications dans Power Query car les fichiers seront par la suite directement importer dans power Query à partir d'un répertoire.
Ci joint un fichier avec les données sur un onglet et la base DATA dans Power Query avec ces colonnes à remplacer.

Merci d'avance et bonne journée à tous
 

Pièces jointes

Dernière édition:
Bonjour jlbcall, combory, le forum,

Avec Power Query, il faut bien distinguer :
  • les temps - type time - dont la valeur ne peut excéder 24 heures ;
  • et les durées - type duration.

Pour ton besoin, il te faudra utiliser les durées, comme proposé par @alexga78 sur ton précédent fil et gérer le format d'affichage au niveau des cellules du tableau renvoyé dans Excel.

Tu trouveras un exemple ci-joint.

De manière générale, sur le forum, il est conseillé de :
  • donner un titre explicite au fil de discussion (par exemple : Power Query - heures supérieures à 24:00) ;
  • éviter d'ouvrir plusieurs fils de discussion pour un même problème ;
  • essayer de fournir un jeu de données représentatif.

A+
 

Pièces jointes

Bonjour,
@mromain et @alexga78 , en complément à vos excellentes réponses, dans l'autre fil 😕, il évoquait également :
... Autre problème j'ai parfois des formats en 25:45 (format texte) si je les transforme en format Heures Power Query mais la valeur en Error. Je voudrais donc également modifier le format en heures sans perdre la valeur.
Avec cette transformation, on obtient bien la durée, que 25:45 soit au format "Texte", ou au format [h]:mm

PowerQuery:
Table.TransformColumns(Source, {"Heures", each  try let x = List.Transform(Text.SplitAny(_,"h"":"), Number.From) in #duration(0,x{0},x{1},0) otherwise Duration.From(_)})

Bonne journée
 
Re-,
Avec ce code :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ListCols = {"A","B","C","D","E","F","G","H","I","J","K","L","M"},
    Transform = List.Accumulate(ListCols, Source, (s,c)=> Table.TransformColumns(s, {c, each  try let x = List.Transform(Text.SplitAny(_,"h"":"), Number.From) in #duration(0,x{0},x{1},0) otherwise Duration.From(_)})),
    Final = Table.TransformColumnTypes(Transform, List.Transform(ListCols, each {_, type duration}))
in
    Final
PS, il faut formater les colonnes contenant ces durées en [h]:mm (ou [h]:mm:ss
 
Dernière édition:
Bonjour à tous,

@Cousinhub :
La fonction Table.TransformColumns permettant d'effectuer des transformations sur plusieurs colonnes, il est possible de se passer de la fonction List.Accumulate ainsi :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ListCols = {"A","B","C","D","E","F","G","H","I","J","K","L","M"},
    ListTransformations = List.Transform(ListCols, (col)=>{col, each let x = List.Transform(Text.SplitAny(_,"h"":"), Number.From) in #duration(0,x{0},x{1},0), type duration}),
    Transform = Table.TransformColumns(Source, ListTransformations)
in
    Transform

C'est un tout petit peu plus rapide.

Bonne journée
 
Bonsoir,
@mromain , merci pour cette amélioration (hop, in my pocket)
En prenant en compte les cellules déjà "formatées" hh:mm, donc en rajoutant le try..otherwise, cela donnerait :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ListCols = {"A","B","C","D","E","F","G","H","I","J","K","L","M"},
    ListTransformations = List.Transform(ListCols, (col)=>{col, each try let x = List.Transform(Text.SplitAny(_,"h"":"), Number.From) in #duration(0,x{0},x{1},0) otherwise Duration.From(_), type duration}),
    Transform = Table.TransformColumns(Source, ListTransformations)
in
    Transform
Bonne fin d'apm
 
- 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

  • Question Question
Microsoft 365 Power Query
Réponses
2
Affichages
76
Réponses
1
Affichages
55
  • Question Question
Power Query Power Query
Réponses
26
Affichages
412
Réponses
8
Affichages
410
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
127
Réponses
2
Affichages
460
Retour