Empêcher Google Sheet de formater des données en heures
Bonjour à tous,
Voilà maintenant quelques temps que je m'arrache les cheveux sur un problème qui (j'en suis quasiment sûr) possède une solution simple que je ne trouve pas.
J'ai déjà remarqué que Google Sheets à tendance à "réinterpréter" ce que je lui écris sans que je ne lui demande rien si le format "automatique" est activé sur une cellule : je tape 1 1 1 et il remplace par 1 1 2001... Bon ça j'ai réussi à m'y faire en faisant attention à ne jamais utiliser le format automatique qui casse tout systématiquement et je n'ai plus trop de problème pour écrire ce genre de chose à la main. Seulement voilà que ce problème (qui m'a déjà valu un petit mal de crâne avec solution simple trouvée aux bout de quelques minutes de recherche) revient au galop. Après cette longue introduction voici mon problème avec tous les détails:
Je travaille sur un fichier de gestion d'empire sur Ogame qui est doté d'une API dans lequel se situe le nom de toutes les planètes du serveur avec leur coordonnées. L'idée est de récupérer automatiquement les coordonnées des planètes dans l'API pour les mettre dans des cellules de mon google doc. Voici le code que j'utilise : "=IMPORTXML("LIEN"; "//planet/@coords")". Le problème est que le résultat affiché est comme interprété en heure:minute:seconde par Google Sheets. Donc là où la première cellule devrait être égale à "6:246:5" elle est modifiée pour valoir "13:04:05". J'ai tout (selon moi et mes recherches) essayé, sans que rien n'aide. Si je formate la cellule en "texte brut" je me retrouve avec un nombre à virgule (en l'occurrence 0.5445.... ce qui correspond à la proportion de 13:04:05 sur 24 heures...). J'ai tout de même réussi à trouver une solution qui fonctionne mais qui n'est clairement pas satisfaisante : une fonction Python créée avec Neptyne :
def position(nom_planete):
'# Télécharger le fichier XML'
url = "LIEN"
response = requests.get(url)
'# Analyser le fichier XML'
root = ElementTree.fromstring(response.content)
'# Extraire les noms des planètes et leurs coordonnées'
for planet in root.iter('planet'):
name = planet.get('name')
print(type(name))
if str(name) == nom_planete:
coords = planet.get('coords')
return coordset ça marche : le résultat sort sous forme "6:246:5", seulement j'aimerais éviter d'utiliser des scripts supplémentaires puisque ce document est amené à être partagé en masse. Cela m'a rassuré sur ma folie : les données sont bien envoyées sous le bon format, mais je n'arrive pas à empêcher la fonction IMPORTXML de modifier ce format avant de l'afficher dans la cellule. Est-il possible d'empêcher l'interprétation de ces données ou vais-je être obliger de garder cette fonction Python ?
Je profite de ce message pour anticiper une deuxième question, je suis en pleine découverte des fichiers XML et je n'arrive pas à faire quelque chose en particulier : les planètes sont parfois accompagnées de lune, j'ai réussi à récupérer les noms des lunes, mais je n'arrive pas à récupérer le nom d'une lune qui se trouve sur une planète dont j'ai le nom dans une autre cellule (en l'occurrence la planète "Amylo" a une lune qui s'appelle "Rifta", j'ai réussi à faire écrire les deux noms dans mes cellules, mais je trouve pas comment les associées entre elles).
Merci d'avance pour vos réponses,
Smoofy.
P.S : je n'ai pas l'autorisation de poster des liens je les ai donc remplacés par le mot "LIEN".
Bonjour,
As-tu essayé ça :
=ARRAYFORMULA(QUERY(TO_TEXT(IMPORTXML("LIEN"; "//planet/@coords"))))Cordialement,
Fil.
Bonjour à vous, et surtout merci de vous intéresser à mon petit problème ^^.
Pierre Lepinay : J'avais essayé oui, j'ai aussi essayé #:###:##, rien n'y fait, soit ça vaut 13:04:05 soit 0,52 selon les format que j'ai pu essayé...
Filoche : J'ai parcouru un peu le forum avant de poser ma question et je me doutais bien que tu me parlerais de query ^^. Je ne comprends pas encore tout dans son fonctionnement, mais j'avais déjà fait quelques essais infructueux (soit des erreurs, soit le même résultat) oui :(. La formule que tu me propose renvoie 13:04:05 quand je la mets dans mon doc :(.
Ensuite, je me demandais si il n'y avait pas moyen de faire un vrai format d'heures personnalisé où on utiliserait des minutes de 15 secondes et des heures de 499 minutes ... ça réglerait peut être le problème XD.
Smoofy.
Et en bricolant un peu ?
=ARRAYFORMULA(QUERY(TO_TEXT(SUBSTITUE(IMPORTXML("LIEN"; "//planet/@coords");":";" "))))Toujours pas non, j'obtiens le même résultat :(, il semblerait que mon problème ne soit pas aussi simple que ce que je pensais. J'ai même poussé la parano jusqu'à tester la fonction Python et les formules que tu m'as proposé dans la même cellule (pour écarter tout éventuel problème de formatage de cellule), mais rien n'y fait, j'obtiens bien 6 424 5 avec la fonction Python et 13 04 05 avec les formules que tu m'as proposés :(. En fait, j'ai l'impression que c'est la fonction IMPORTXML qui modifie ce qu'elle reçoit et que du coup les couches supplémentaires n'ont plus accès à l'info de départ (typiquement ton ajout de SUBSTITUE a bien enlevé les : et les a remplacés par des espaces, mais sur ce qui a été reçu dans SUBSTITUE, à savoir 13 04 05 ...)
Le soucis c'est que je ne peux même pas contourner le problème à la mains en manipulant le 0.52 avec des calculs pour savoir ce que ça fait en coordonnées, puisque le la division euclidienne par 60 fait perdre l'info du nombre du milieu, j'ai pas moyen de calculer le quotient XD. J'ai pas non plus réussi à extraire les nombres séparément, ce qui aurait aussi réglé le soucis sans élégance, mais je pense que ce qui est envoyé c'est "6:424:5" et on peut pas le couper avant de le recevoir...
EDIT : j'ai découvert l'existence du paramètre régional de la fonction IMPORTXML, j'ai demandé une liste à bing conversation et j'ai tester une liste de 57 paramètres régionaux, j'ai des erreurs pour certains d'entre eux, en même temps BING a du inventer la liste puisqu'il n'en a pas trouvé d'officielle, mais aucun ne me donne le 6:424:5 tant convoité :( Encore une fausse piste.
Bonjour,
Et en passant par un script au lieu d'IMPORTXML ?
Bonjour,
Si tu peux m'envoyer le lien pour accéder aux API en MP, j'essaierais de faire des essais de mon côté ???
Merci,
Fil.
Bonjour,
J'ai trouvé une solution en utilisant le format régional finlandais :
=IMPORTXML("https://s123-fr.ogame.gameforge.com/api/playerData.xml?id=148588"; "//planet/@coords";"FI")https://docs.google.com/spreadsheets/d/1BpPyVDLX-qVA4ytLIJaA2exbv0Q7N7OmCIEYgVEILVU/edit?usp=sharing
Cordialement,
Fil.
Salut !
Ahah, bon bah j'avais quand même une bonne piste alors avec cette histoire de format régional XD, 57 testés, je suis quand même curieux de savoir comment t'as pu pensé à la Finlande ^^, quoi que maintenant que j'y pense, je me dis que j'aurais pu tester beaucoup plus de paramètres en utilisant les noms des colonnes du tableur : tout de AA à ZZ (EDIT pendant que j'écris le message : j'ai essayé et c'est pas une si bonne idée, j'ai plein de chargements infinis :s mais j'ai quand même pu retrouver le "FI" qui donne un résultat clairement différent ^^, y'a "MN" aussi qui m'a donné un résultat marrant : y'a pas de secondes)... Ce qui fait peur, c'est que ça marche parce que le format Finlandais ne comporte pas d'instruction pour les heures et que ça cassera tout le jour d'une mise à jour :S.
Alors la mauvaise nouvelle c'est qu'il semble que la fonction SPLIT ait le même problème qu'IMPORTXML, quand je veux passer de ligne à colonne en l'utilisant, j'ai exactement le même soucis. J'ai réussi à le contourner en mettant les coordonnées dans une colonne cachée du tableur pour ensuite les récupérer en allant chercher les valeurs avec "=INDIRECT(ADDRESS(C5+row($V$6);COLUMN($V$6)))" où C5 sont les numéros des planètes et V6 qui est la cellule juste au dessus de la première colonne de coordonnées. Je sais pas si c'était le plus propre à faire, mais ça marche sans modifier le format, ouf enfin ! Maintenant il suffit de choisir le bon serveur et d'écrire le bon pseudo dans le doc' pour qu'il récupère tous les noms des planètes avec leurs coordonnées et le tout sans script supplémentaire, c'est trop la classe et beaucoup trop satisfaisant =). On pourra aussi connaitre les coordonnées de toutes les bases d'un ennemi en rentrant juste son nom, mouhahahah.
Merci beaucoup pour votre aide à tous les deux, vous êtes des boss =) (PierreLapinay, je viens de voir que j'ai zappé de répondre à une de tes réponses : avec un script, je sais pas ce que ça pouvait donner, mais j'avais déjà trouvé comment contourner le problème avec la fonction Python, de mon point de vu c'est à peu près équivalent, juste la solution ne me plaisait pas trop parce que ça me semblait trop complexe alors qu'il semblait n'y avoir qu'à réparer la fonction du tableur qui fait ça directement, de plus j'ai eu beaucoup d'erreurs avec la fonction Python en essayant le tableur dans les différentes manières d'accéder à Google Sheets bizarrement).
Je valide le sujet !
Cordialement,
Smoofy.
Merci pour ton retour.
Pour satisfaire ta curiosité, je n'ai pas spécialement pensé à la Finlande, mais j'ai voulu essayer un pays nordique à cause de leur alphabet différent et de l'utilisation de signes diactiques particuliers également !
La Finlande est le premier pays que j'ai testé et cela a fonctionné.
Peut-être que cela fonctionne également avec le danois, le norvégien ou autres, mais je n'ai pas testé...
La chance du débutant, peut-être...
Bah chance de débutant, bof ouais, t'as eu une sacrée intuition quand même XD. Aller, ça sera mon ultime dernier message sur ce sujet, juste parce que je trouve l'info rigolote. J'ai essayé tous les formats entre AA et ZZ (ça m'a pris longtemps vu qu'on ne peut pas charger trop de trucs en même temps) et j'en ai trouvé d'autres qui fonctionnent au cas où FI est réparé ^^, je pense pas en avoir raté : DA (pour le Danois j'imagine ;) ), IT, NO (pour le Norvégien) et SV. Je garde la liste dans un coin au cas où ^^.
