Changer le point en virgule du pavé numérique

Bonjour à tous,

Ce sujet a déjà été abordé mais je n'arrive pas à le faire fonctionner avec le fichier de Sébastien (Boite de dialogue)

// Menu personnalisé (https://www.sheets-pratique.com/fr/codes/menu-personnalise)
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Sheets-Pratique')
    .addItem('Formulaire (barre latérale)', 'formulaire')
    .addItem('Formulaire (boîte de dialogue)', 'formulaire2')
    .addItem('Formulaire (boîte de dialogue non bloquante)', 'formulaire3')
    .addToUi();
}

// Barre latérale
function formulaire() {
  const html = HtmlService.createHtmlOutputFromFile('form').setTitle('Ajouter un utilisateur');
  SpreadsheetApp.getUi().showSidebar(html);
}

// Boîte de dialogue
function formulaire2() {
  const html = HtmlService.createHtmlOutputFromFile('form')
    .setWidth(250)
    .setHeight(900);
  SpreadsheetApp.getUi().showModalDialog(html, 'Ajouter un utilisateur');
}

// Boîte de dialogue (showModelessDialog)
function formulaire3() {
  const html = HtmlService.createHtmlOutputFromFile('form')
    .setWidth(250)
    .setHeight(900);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Ajouter un utilisateur');
}

// Insertion des données du formulaire
function ajouterLigne(tab) {
  SpreadsheetApp.getActiveSheet().appendRow(tab);
}

function onEdit(event) {
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if (f.getName() == 'Ventilations!'){
  if (r.getA1Notation() == 'J' || r.getA1Notation() == 'K') {
    var val = event.value;
  if (!isNaN(val)) {
    var res = val.replace(".", ",");
      r.setValue(res);
      }
    }
  }
}

Serait-il possible de m'éclairer ?

Merci pour vos réponses.

CDLT

Alex

A première vue, ça ne peut pas marcher car cette condition ne peut pas être validée (getA1Notation ne renvoie pas que la lettre seule) :

if (r.getA1Notation() == 'J' || r.getA1Notation() == 'K') {

Ah, je suis sur 2 colonnes "J" et "K"

J'ai essayé aussi celle-là !

function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sheet = ss.getActiveSheet()
var Rg = Sheet.getActiveCell()
var virg = e.value;
if (isNaN(virg)){}else{
var res = virg.replace(".", ",");
Rg.setValue(res);
// ss.toast(res)
}
}

Mais ça n'a pas fonctionné non plus.

J'ai réécrit ta fonction en version raccourcie

function onEdit(e) {
  const r = e.range;
  r.getSheet().getName() == 'Ventilations!' && [10, 11].includes(r.getColumn()) && r.setValue(r.getValue().replace('.', ','));
}

Le tableau [10, 11] contient les numéros des colonnes ciblées.

Chez moi ça fonctionne, le point est remplacé par la virgule.

Bonsoir,

si c'est cette ligne qui est en cause la remplacer par

  if (r.getColumn() == 10 || r.getColumn() == 11) {

peut-être ????

oups en retard désolé bonne soirée

Gilbert

Bonjour, j'ai essayé les modifications avec vos 2 versions et rien !

Essaie en entrant un point dans une valeur non numérique (par exemple a.5) pour voir si ça convertit.

Vérifie aussi que ta page se nomme bien Ventilations!.

Non pas de réaction !

Je te remets le script au cas où

// Menu personnalisé (https://www.sheets-pratique.com/fr/codes/menu-personnalise)
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Sheets-Pratique')
    .addItem('Formulaire (barre latérale)', 'formulaire')
    .addItem('Formulaire (boîte de dialogue)', 'formulaire2')
    .addItem('Formulaire (boîte de dialogue non bloquante)', 'formulaire3')
    .addToUi();
}

// Barre latérale
function formulaire() {
  const html = HtmlService.createHtmlOutputFromFile('form').setTitle('Ajouter un utilisateur');
  SpreadsheetApp.getUi().showSidebar(html);
}

// Boîte de dialogue
function formulaire2() {
  const html = HtmlService.createHtmlOutputFromFile('form')
    .setWidth(250)
    .setHeight(900);
  SpreadsheetApp.getUi().showModalDialog(html, 'Ajouter un utilisateur');
}

// Boîte de dialogue (showModelessDialog)
function formulaire3() {
  const html = HtmlService.createHtmlOutputFromFile('form')
    .setWidth(250)
    .setHeight(900);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Ajouter un utilisateur');
}

// Insertion des données du formulaire
function ajouterLigne(tab) {
  SpreadsheetApp.getActiveSheet().appendRow(tab);
}

function onEdit(e) {
  const r = e.range;
  r.getSheet().getName() == 'Ventilations!' && [10, 11].includes(r.getColumn()) && 
  r.setValue(r.getValue().replace('.', ','));
}

Chez moi ça fonctionne, donc sans fichier joint, je n'ai pas d'autre idée ...

Il n'est pas partagé.

Oups, ça y est !

Ah voila ... Ça change tout

Dans ce cas, inutile de passer pas onEdit (tu peux le supprimer).

Remplace :

        // Récupération des valeurs
        for (const input of inputs) {
          tab.push(input.value);
        }

Par :

        // Récupération des valeurs
        for (const input of inputs) {
          tab.push(['Débit', 'Crédit'].includes(input.name) ? input.value.replace('.', ',') : input.value);
        }

non, rien de rien, non il n'y a toujours rien, ni virgule, ni euros.....

non, rien de rien, non il n'y a toujours rien, ni virgule, ni euros.....

Tu as bien fermé et réouvert la sidebar avant d'essayer ?

Tu as bien fermé et réouvert la sidebar avant d'essayer ?

Ah ben non je pensait que le fait de fermer et rouvrir le fichier ça aurait mis les colonnes déjà écrites avec une virgule.

J'ai bien les virgules mais il n'affiche pas les euros, j'ai sélectionné les 2 colonnes mis au bon format mais à chaque nouvelle écriture il faut que je refasse la manip format euros.

Essaie avec :

        // Récupération des valeurs
        for (const input of inputs) {
          tab.push(['Débit', 'Crédit'].includes(input.name) ? parseFloat(input.value) : input.value);
        }

EUREKA !!!

Un grand merci !

Pour Info :

Il garde les euros à condition d'avoir fait la manip format> nombre>euros après avoir installé tes dernières formules et avant d'activer la sidebar sinon nada.

Bonjour Sébastien, en démarrant internet j'ai 3 onglets de 3 comptes Google différent qui s'activent, j'ajoute un onglet en ajoutant un compte "Alexander", je démarre le fichier argent de poche qui est dans mon drive, j'active la sidebar elle s'affiche et je rentre les données, je clic sur ajouter, tout disparaît mais rien ne s'affiche dans la feuille "ventilations". J'ai cliqué sur tous les comptes puis "Se déconnecter de tous les comptes" j'ai réactivé uniquement le compte Alexander refais la manip de la sidebar et ça refonctionne.

La mauvaise nouvelle c'est que ça fait la même chose avec ton fichier original "Copie de [523] Formulaire latéral - Sheets-Pratique.com"

Alex

Rechercher des sujets similaires à "changer point virgule pave numerique"