Incrementation + concaténation

Bonjour

Dans le cadre de l 'amélioration de mon script

j 'ai actuellement le code d 'incrémentation d 'une valeur

var codeprecedent = SpreadsheetApp.getActive().getSheetByName('2024').getRange('B6')

newcode.setValue(codeprecedent.getValue()+1);

sauf que j 'ai placé dans ma feuille sheet en cellule la concaténation ( formule) suivante

=CONCAT( "MI24-" ; newcode )

je cherche comment écrire l 'incrémentation + la concaténation en 1 code script

j 'ai tester différente syntaxe sans réussite / ou bien je dois passer par une variable ??

MERCI

Bonjour,

C'est bien sur possible via le code mais il y a plusieurs aspects à prendre en compte :

  1. tout d'abord il me vient en tete que vous pourriez simplement entrer via le code la fonction =CONCAT( "MI24-" ; newcode ) avec la valeur de newcode définie dans le code.

Pourquoi ? C'est, je pense, la solution la plus simple à mettre en place tout en gardant l'aspect "fonctionnel" du classeur.

Autrement,

  1. Comme vous le remarquez vous faites face à un problème car une fois la concaténation effectuée, ce n'est plus un numéro que vous avez mais une String, une chaine de caractères, du texte. Et le code ne "sait pas" incrémenter un texte, surtout complexe comme celui-ci.

Il faut donc lui expliquer comment procéder. On veut incrémenter, dans le texte "MI24-13" la partie se trouvant après le "-". Donc on va devoir découper la String, à une longueur variable puisque les numéros peuvent avoir plusieurs digits. Puis incrémenter la valeur obtenue, puis la réinjecter dans une nouvelle String de remplacement. Il n'y a pas (que je sache) de manière plus rapide !

  1. Alternativement, si vos résultats sont simplement visuels vous pouvez vous en sortir avec un format de nombres custom dans lequel vous faites apparaitre "MI24-" avant la valeur de la cellule. Ainsi la cellule contient simplement 13, mais affiche "MI24-13". Et l'incrémentation est facile il suffit de garder votre code actuel. Le désavantage éventuel est que "MI24-" n'est pas vraiment dans la cellule, c'est juste visuel.

Pour reprendre la proposition 2., plus proche de votre demande (et la solution 1 est très similaire). Comment faire ?

// sauvegarde de la valeur de la cellule initiale ("MI24-13" par exemple)
var codeprecedent = SpreadsheetApp.getActive().getSheetByName('2024').getRange('B6').getValue();

// découpe via indexOf et slice, et sauvegarde dans une autre variable "index"
// on utilise l'instruction number pour convertir une string en nombre
var index = Number(codeprecedent.slice(codeprecedent.indexOf("-")));

// incrémentation et retour dans la cellule
// on peut remplacer newcode par SpreadsheetApp.getActive().getSheetByName('2024').getRange('B6'). pour réécrire dans la cellule initiale
newcode.setValue("MI24-" + (index+1));

String.prototype.slice() - JavaScript | MDN (mozilla.org)

JavaScript String indexOf() Method (w3schools.com)

MERCI

beaucoup

après consultation de tes liens j 'ai a peu près assimilé

Rechercher des sujets similaires à "incrementation concatenation"