Comment puis-je demander à Google Sheets de traiter mes chaînes soumises sous forme de texte en clair et de conserver les zéros en tête?


8

J'ai des formulaires Google dans lesquels les utilisateurs saisissent des informations, dont certaines contiennent des zéros en tête (par exemple, codes postaux, numéros d'identification).

Cependant, lorsque ces données sont enregistrées dans la feuille de calcul Google, elles ne sont pas traitées comme du texte brut et supprime le zéro. Les champs de formulaire sont des champs de texte sans validation.

J'ai essayé de formater la plage de cellules contenant ces valeurs en texte brut, mais il semble que Sheets ne définit pas la mise en forme en texte brut sauf s'il y a déjà du texte dans une cellule. Je peux donc formater une colonne en texte brut, soumettre le formulaire et le zéro de tête sera toujours supprimé.

J'ai essayé d'écrire un script d'applications pour y faire face, mais il n'y a pas de bon moyen pour moi de le déployer aux utilisateurs qui en auraient besoin.

Comment puis-je contourner ce problème sans avoir à demander aux utilisateurs d'ajouter un seul devis à leur entrée de formulaire? C'est une si petite chose, mais je ne peux pas trouver une bonne solution simple à ce qui semble être un problème commun. Si je ne parviens pas à faire fonctionner cela, je devrai peut-être supprimer complètement Google Forms / Sheets.


1
Bienvenue dans les applications Web ! Bonne question, je l'ai légèrement modifié pour en faciliter la lecture. Avez-vous vu Comment puis-je demander à Google Docs d'arrêter de mettre en forme une réponse de formulaire en tant que date?
Vidar S. Ramdal

1
Oui, et comme indiqué ci-dessus, j'ai essayé ce que la "réponse acceptée" suggérait, mais c'est pour une ancienne version de feuilles et cela ne fonctionne plus.
res

Réponses:


3

Une partie de ma réponse serait: c'est un bug connu (les soumissions de formulaires nouvellement reçues ne respectent pas le format des colonnes dans lesquelles elles atterrissent, comme elles le faisaient dans l'ancienne version des feuilles).

Selon ce que vous ferez ensuite des données, une autre option serait de reproduire les soumissions de formulaire sur une autre feuille, avec le format correct. Par exemple, si la colonne E contient des codes postaux qui doivent être composés de 5 chiffres et inclure des zéros non significatifs (si nécessaire), vous pouvez utiliser:

=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))

sur une autre feuille.

Cependant, vous devrez également récupérer toutes vos autres colonnes. Sans devenir trop compliqué, cela peut être raisonnablement facilement réalisé dans la nouvelle version de Sheets, et formatez la ou les colonnes comme vous le souhaitez, avec (par exemple):

=QUERY('Form Responses'!A:G,"select * format E '00000'",1)


2

Je viens de toucher ce problème, mais malheureusement je ne connais pas le nombre de chiffres que j'attends donc je ne sais pas combien de zéros peuvent être manquants. Heureusement, j'y ai pensé avant d'envoyer le formulaire, si vous avez déjà des réponses, cela n'aidera pas (à moins que vous ne le renvoyiez).

Pour résoudre ce problème, j'ai:

  1. Définissez le type de question sur "Texte"
  2. Sous "Paramètres avancés", j'ai sélectionné "Expression régulière"
  3. Dans la liste déroulante suivante, j'ai sélectionné "Matchs"
  4. Dans la zone de texte que j'ai saisie ^\[\d+\]$

Cette expression régulière oblige l'utilisateur à saisir un crochet ouvert au début de sa réponse, qui doit ensuite être suivi d'au moins un chiffre et se terminer par un crochet fermé. Par exemple, [0021314] serait une entrée valide. Notez que cela n'autorisera que les chiffres, si vous voulez simplement forcer les crochets, vous pouvez utiliser à la ^\[.+\]$place.

Dans la feuille, cela apparaîtra comme [0021314], vous devrez donc supprimer les crochets, ce qui peut être fait avec une formule comme =mid(A1,2,len(A1)-2)où A1 est la cellule contenant [0021314]. Le remplissage automatique et le formatage des cellules en texte brut devraient faire le reste de ce dont vous aurez besoin.

Vous pouvez également modifier l'expression régulière pour forcer les utilisateurs à saisir un seul devis au début de leur entrée.


0

Une façon longue de dire "je ne sais pas comment" couplé avec "semble ne pas être possible" (mais c'est vraiment dommage):

Le meilleur (mais faible) que je puisse gérer est d'attendre l'entrée (et donc également la sortie) un chiffre à la fois en utilisant une échelle de 0 à 9 pour chaque chiffre.


0

Les solutions proposées ici et sur d'autres threads ne fonctionnent que pour les nombres avec un nombre fixe de chiffres. Comme 5 pour le code postal considéré ci-dessus.

Je dois garder le premier zéro des numéros de téléphone belges.
Les lignes fixes belges ont la structure 025382172 (9 chiffres)
tandis que les téléphones mobiles ont la structure 0475123456 (10 chiffres)

Je pensais avoir trouvé une solution de contournement dupliquant les données dans un nouvel onglet. Pour ce faire, j'utilise deux tableaux distincts pour charger par lots des groupes de colonnes.

Un premier tableau copie toutes les colonnes jusqu'à la colonne du numéro de téléphone G, non incluse. =ARRAYFORMULA('Form Responses'!A2:F302)
Un deuxième tableau copie toutes les colonnes après la colonne du numéro de téléphone G jusqu'à la dernière.=ARRAYFORMULA('Form Responses'!H2:P302)

Dans la colonne du numéro de téléphone, j'ai une formule simple pour ajouter un zéro avant la valeur copiée: =("0"&'Form Responses'!G2)

... malheureusement, cela ne fonctionne qu'en mode statique.
En mode dynamique, lorsqu'une nouvelle ligne provient d'un formulaire Google, la formule dans la colonne de numéro de téléphone G est foirée, même si les tableaux ne sont pas censés affecter cette colonne.

En fait, la formule =("0"&'Form Responses'!G2)passe à la ligne suivante qui est vide, =("0"&'Form Responses'!G3)laissant la cellule avec une valeur frustrante de 0.

Poursuivra mes investigations en revenant à un tableau unique pour toutes les colonnes d'un bloc, en ajoutant une colonne de numéro de téléphone en double à droite en dehors de la zone du tableau et en entrant simplement la formule suivante: =("0"&G3)... curieux de savoir si cela fonctionnera ... Si il le fait, je vais masquer la colonne du numéro de téléphone "natif" et n'afficher que celui traité (malheureusement pas au bon endroit sur la page).


La solution décrite FONCTIONNE, à condition que la colonne du numéro de téléphone converti ne soit PAS coincée entre deux tableaux. Il doit être en dehors de la zone où les données sont ajoutées automatiquement. Soit à droite, soit à gauche. HOURRA! Amicalement de Belgique. Pierre
Pierre Becquart

0

Ceci est un ancien article, mais je recommanderais ce qui suit ...

Dans l'onglet résultat, A1:

=QUERY('Form Responses'!A:F)

En G1:

=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))

Au premier semestre:

=QUERY('Form Responses'!H:P)

Une approche similaire peut être ajoutée pour modifier les données des colonnes qui doivent être modifiées.


0

J'ai résolu mon problème de code postal qui commence par un "0" de cette façon ... Mettez en surbrillance la colonne, allez dans l'onglet format, cliquez sur "nombre", "plus de formats" puis "formats de numéro personnalisés" Puisque mes codes postaux ne sont que 5 chiffres, j'ai tapé "00000" et appuyez sur Appliquer. et ça a marché!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.