Convertir du temps au format texte en temps [hh]:mm:ss

Bonjour au forum,

Je suis en train de m'épuiser sur un fichier qu'un collègue m'a passé, où malheureusement la saisie du temps a mal été effectuée.

Auriez-vous une idée de comment convertir ces temps saisis au format texte en temps [hh]:mm:ss, l'objectif étant de pouvoir effectuer des calculs ?

Merci d'avance !

27fof.xlsx (8.86 Ko)

Bonjour Nrev74,

Une méthode possible et d'utiliser fractionner texte pour décomposer tes champs et ensuite d'analyser le caractère de droite pour définir le multiplicateur de l'unité.

le jour valant 1, l'heure 1/24, la minute 1/60 d'une heure et enfin la seconde 1/3600 d'une heure;

ça donnerait quelque chose comme le tableau suivant;

c'est assez simple; sinon si le fichier est plus conséquent il faudrait surement envisager du powerquery pour faire la transformation ça serait plus "propre"

24fof-aleph.xlsx (12.73 Ko)

j'avais fais une faute j'ai édité mon post précédent pour remettre le bon fichier

Salut WonderAleph,

Merci beaucoup pour ta proposition, ca conviendra parfaitement.

Je ne connaissais pas "Fractionner", belle découverte !

Bonne journée à toi et merci encore !

Bonsoir,

Pour essayer de parfaire mon apprentissage en Power Query

Un essai, certainement "condensable" ou améliorable

Le code :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Calcul = Table.AddColumn(Source, "Temps", each 
        [all = Text.Split([Liste]," "),
         s = Number.From(List.Max(List.Transform(all, (x)=> if Text.Contains(x,"s") then Text.Remove(x,"s") else 0))),
         m = Number.From(List.Max(List.Transform(all, (x)=> if Text.Contains(x,"m") then Text.Remove(x,"m") else 0))),
         h = Number.From(List.Max(List.Transform(all, (x)=> if Text.Contains(x,"h") then Text.Remove(x,"h") else 0))),
         d = Number.From(List.Max(List.Transform(all, (x)=> if Text.Contains(x,"d") then Text.Remove(x,"d") else 0))),
         t= #duration(d,h,m,s)][t])
in
    Calcul

Le fichier (format de la requête en [hh]:mm:ss)

Bonne soirée

Bonsoir Cousinhub,

Je n'ai jamais vraiment pris le temps de tester power query, ta proposition sera parfaite pour m'y mettre et essayer de comprendre.

Merci beaucoup !

Bonne soirée :)

Bonjour à tous,

Avec une fonction personnalisée : EnHeure() Il faut bien sûr mettre le bon format sur la colonne résultat.

Le code à mettre dans un module :

Function EnHeure(xh$)
Dim t, x, res#
   t = Split(Application.Trim(Replace(xh, Chr(160), " ")))
   For Each x In t
      Select Case Right(x, 1)
         Case "d": res = res + Val(x)
         Case "h": res = res + Val(x) / 24
         Case "m": res = res + Val(x) / 24 / 60
         Case "s": res = res + Val(x) / 24 / 60 / 60
      End Select
   Next x
   EnHeure = res
End Function

Bonjour mafraise,

Merci beaucoup pour ta proposition, je ne la vois qu'à l'instant, désolé !

Je vais garder ce bout de code dans un coin, merci :)

Bonjour @Nrev74,

No problemo.

Rechercher des sujets similaires à "convertir temps format texte"