Marc Boucher Posted April 30 Report Share Posted April 30 Bonjour, grace à certains, j'utilise cette formule: Definir ( [ txt = SupprimerFormatTexte ( SupprimerEspace ( Perf ) ) ; txt = Si ( EstVide ( Filtre ( txt ; "cmkgpts" ) ) ; txt ; Substituer ( txt ; "." ; "," ) ) ; c = Occurrences ( txt ; ":" ) ; d = Occurrences ( txt ; "." ) ; mishmash = Si ( d ; Debut ( txt ; Position ( txt ; "." ; 1 ; 1 ) - 1 ) ; txt ) ; nth = Si ( d ; Fin ( txt ; Longueur ( txt ) - Position ( txt ; "." ; 1 ; Occurrences ( txt ; "." ) ) ) ) ] ; Cas ( c = 2 ; Remplace ( Remplace ( mishmash ; Position ( mishmash ; ":" ; 1 ; 1 ) ; 1 ; "h" ) ; Position ( mishmash ; ":" ; 1 ; 2 ) ; 1 ; "'" ) ; c = 1 ; Remplace ( mishmash ; Position ( mishmash ; ":" ; 1 ; 1 ) ; 1 ; "'" ) ; mishmash ) & Si ( d ; "\"" & nth ) ) sauf que pour certains résultats j'ai des résultats genre: 138"79 comment les convertir en 2'18"79? cela peux concerner soit des heures affichées en des minutes ou des minutes en secondes (exemple), dans tous les cas, les secondes " sont indiquées Merci d'avance Quote Link to comment Share on other sites More sharing options...
0 Apophis000 Posted April 30 Report Share Posted April 30 Bonjour Vous pouvez donner quelque exemple de quoi vous devez partir ? Quote Link to comment Share on other sites More sharing options...
0 Marc Boucher Posted April 30 Author Report Share Posted April 30 résultats genre: en minute: 138"79 soit = 2'18"79 en heure 176'52" soit = 2h56'52" Quote Link to comment Share on other sites More sharing options...
0 Jérémie Gimenez Posted April 30 Report Share Posted April 30 Je pense qu'il faut se baser sur Occurrences ( la_chaine ; "'" ). Si on a un ' on fait ci, sinon on fait ça. Non ? Quote Link to comment Share on other sites More sharing options...
0 tcolles Posted May 2 Report Share Posted May 2 Bonjour Marc, Tu peux essayer cette formule Let ( [ _time = "176'138\"79" ; _timeV = Substitute ( _time ; ["\"" ; ¶] ; ["'" ; ¶ ] ) ; _h = GetValue ( _timeV ; 1 ) ; _m = GetValue ( _timeV ; 2 ) ; _s = GetValue ( _timeV ; 3 ) ; _m = _m + int ( _s / 60 ) ; _s = mod ( _s ; 60 ) ; _h = _h + int ( _m / 60 ) ; _m = mod ( _m ; 60 ) ] ; time ( _h ; _m ; _s ) ) un peu testée...sans doute à bétonner Jérémie Gimenez 1 Quote Link to comment Share on other sites More sharing options...
0 Jérémie Gimenez Posted May 3 Report Share Posted May 3 @Marc Boucher J'aimerais bien voir quelques exemples de données que tu reçois en entrée. @tcolles Si les heures ne sont pas présentes en entrée (comme dans le 138"79 de Marc), la formule nécessite un aménagement, car elle renvoie en l'état 139h19. Let ( [ _time = "138\"79" ; _timeV = Substitute ( _time ; ["\"" ; ¶] ; ["'" ; ¶ ] ) ; _unit = ValueCount ( _timeV ) ; // 3 if HMS 2 if MS 1 if S _h = GetValue ( _timeV ; _unit - 2 ) ; _m = GetValue ( _timeV ; _unit - 1 ) ; _s = GetValue ( _timeV ; _unit ) ; _m = _m + int ( _s / 60 ) ; _s = mod ( _s ; 60 ) ; _h = _h + int ( _m / 60 ) ; _m = mod ( _m ; 60 ) ] ; time ( _h ; _m ; _s ) ) (un peu testée aussi) NB : il existe peut-être une fonction pour inverser l'ordre des valeurs d'une liste. Ca remplacerait mon histoire de ValueCount ()… Quote Link to comment Share on other sites More sharing options...
0 Marc Boucher Posted May 3 Author Report Share Posted May 3 voici un exemple ou les : représentent tant les heures que les minutes et les secondes n'ont aucune spécificité, pas retrouvé pour heure en minute Jérémie Gimenez 1 Quote Link to comment Share on other sites More sharing options...
0 Apophis000 Posted May 3 Report Share Posted May 3 @Jérémie Gimenez les commandes int et mod en francai, c'est quoi svp? @Marc Boucher vos temps sont 2:28:01 et pas 138"79 ?? En partant de 138"79 , j'ai fait une autre solution, mais pas très académique, j'en conviens. Jérémie Gimenez 1 Quote Link to comment Share on other sites More sharing options...
0 Jérémie Gimenez Posted May 3 Report Share Posted May 3 int -> ent () mod -> mod ou modulo (?) Quote Link to comment Share on other sites More sharing options...
0 Jérémie Gimenez Posted May 3 Report Share Posted May 3 Il y a 5 heures, Apophis000 a dit : pas très académique, j'en conviens. Pas académique, c'est plutôt un bon point ! 😉 Après, celle de @tcolles a la classe… 🤓 A la place de Tronque ( xxx ; 0 ), tu pourrais avoir Ent ( xxx ) Et la fonction modulo permet d'extraire facilement «les secondes restantes une fois qu'on a pris les paquets de 60 entiers» (puis de même pour les minutes). Quote Link to comment Share on other sites More sharing options...
0 Marc Boucher Posted May 3 Author Report Share Posted May 3 je n'ai pas retrouvé l'exemple, mais si mes souvenirs sont bons, c'était durant les Jeux et non dans les résultats définitifs Quote Link to comment Share on other sites More sharing options...
0 Marc Boucher Posted May 10 Author Report Share Posted May 10 merci à tous pour votre aide Jérémie Gimenez 1 Quote Link to comment Share on other sites More sharing options...
0 Agnès Posted May 12 Report Share Posted May 12 Bonsoir, pas sûre de comprendre l’énoncé avec les " et les ', mais si le premier mot sont les heures/minutes et le second, les secondes, dans ce cas n'est il pas mieux de tout convertir en seconde et laisser time faire ? Let ([ hms = "176'52""" // "138""79" ]; time ( 0 ; 0 ; LeftWords ( hms ; 1 ) *60 + RightWords ( hms ; 1 ) ) ) et ajouter un test si à un moment il peut n'y avoir qu'un "mot" Jérémie Gimenez and tcolles 2 Quote Link to comment Share on other sites More sharing options...
0 Marc Boucher Posted May 13 Author Report Share Posted May 13 Effectivement, les ' sont les minute et " les secondes, sachant que s'il y a une virgule ou un point, cela deviens une distance donc en m avec une virgule entre les mètres et décimètres Quote Link to comment Share on other sites More sharing options...
Question
Marc Boucher
Bonjour,
grace à certains, j'utilise cette formule:
Definir ( [ txt = SupprimerFormatTexte ( SupprimerEspace ( Perf ) ) ; txt = Si ( EstVide ( Filtre ( txt ; "cmkgpts" ) ) ; txt ; Substituer ( txt ; "." ; "," ) ) ; c = Occurrences ( txt ; ":" ) ; d = Occurrences ( txt ; "." ) ; mishmash = Si ( d ; Debut ( txt ; Position ( txt ; "." ; 1 ; 1 ) - 1 ) ; txt ) ; nth = Si ( d ; Fin ( txt ; Longueur ( txt ) - Position ( txt ; "." ; 1 ; Occurrences ( txt ; "." ) ) ) ) ] ; Cas ( c = 2 ; Remplace ( Remplace ( mishmash ; Position ( mishmash ; ":" ; 1 ; 1 ) ; 1 ; "h" ) ; Position ( mishmash ; ":" ; 1 ; 2 ) ; 1 ; "'" ) ; c = 1 ; Remplace ( mishmash ; Position ( mishmash ; ":" ; 1 ; 1 ) ; 1 ; "'" ) ; mishmash ) & Si ( d ; "\"" & nth ) )
sauf que pour certains résultats j'ai des résultats genre: 138"79 comment les convertir en 2'18"79?
cela peux concerner soit des heures affichées en des minutes ou des minutes en secondes (exemple), dans tous les cas, les secondes " sont indiquées
Merci d'avance
Link to comment
Share on other sites
13 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.