Effacer le contenu de plusieurs plages nommées

Bonjour

Je suis entrain de créer un agenda pour ma boite.
J'ai le mois de Janvier qui est ma référence.
J'ai un script qui me permet de dupliquer les mois au fur et à mesure que l'année avance.
Cette partie fonctionne parfaitement.
La seule chose, c'est que je voudrais vider certaines plages de données, celle ou on mets les horaires, comme ça le nouveau mois est vierge.

Mon script copie bien la feuille.
Il copie bien les plages...toutes alors que je lui demande au départ de ne prendre que celle qui commence par DATA dans le nom. ça encore...je pourrais rester la dessus

Le plus gros HIC c'est qu'il efface rien. WHYYYYYYYYYY

function dupliquerFeuille() {

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

var mois = ['JANVIER', 'FÉVRIER', 'MARS', 'AVRIL', 'MAI', 'JUIN', 'JUILLET', 'AOÛT', 'SEPTEMBRE', 'OCTOBRE', 'NOVEMBRE', 'DÉCEMBRE'];
var dernierMoisIndex = 0;

var dernierMoisFeuille = null;

for (var i = 0; i < mois.length; i++) {

var feuilleExistante = spreadsheet.getSheetByName(mois[i]);

// Vérifier si la feuille existe

if (feuilleExistante) {

dernierMoisIndex = i;

dernierMoisFeuille = feuilleExistante;

}

}
if (dernierMoisIndex < mois.length - 1) {

var prochainMois = mois[dernierMoisIndex + 1];

var nouvelleFeuille = dernierMoisFeuille.copyTo(spreadsheet).setName(prochainMois);

nouvelleFeuille.getRange('C2').setValue(prochainMois);

var plagesOriginales = spreadsheet.getNamedRanges(); // Récupérer toutes les plages nommées de la feuille d'origine

for (var i = 0; i < plagesOriginales.length; i++) {

var nomPlage = plagesOriginales[i].getName();

if (nomPlage.startsWith('DATA')) { // Vérifier si le nom de la plage commence par "DATA"

var plageOriginale = plagesOriginales[i].getRange();

var plageDestination = plageOriginale.offset(0, 0, plageOriginale.getNumRows(), plageOriginale.getNumColumns());

spreadsheet.setNamedRange(nomPlage, plageDestination); // Créer la même plage nommée dans la nouvelle feuille

}

}
var plagesNouvelleFeuille = nouvelleFeuille.getNamedRanges(); // Récupérer toutes les plages nommées de la nouvelle feuille
for (var i = 0; i < plagesNouvelleFeuille.length; i++) {

var nomPlage = plagesNouvelleFeuille[i].getName();

if (nomPlage.startsWith(prochainMois + '!DATA')) { // Vérifier si le nom de la plage commence par le nom de la feuille suivi de "!DATA" ! Quand il copie les plages, il met le nom du mois devant d'où cette condition.

var plage = plagesNouvelleFeuille[i].getRange();

plage.clearContent(); // Effacer le contenu des plages nommées dans la nouvelle feuille

}

}

}

}

Je suis pas un expert...j'ai beaucoup utilisé Chat GPT pour ce script...
La copie de feuille, le changement de nom selon le mois de l'année précédent tout fonctionne (si je suis rendu à février il copie en mars, et si en octobre il copie en novembre), c'est juste effacer les données de la nouvelle feuille copiée qui ne fonctionne pas.

Je suis parti sur effacer des plages nommées où sont les données.
Mais si vous avez une méthode qui supprime dans une plage données fixer uniquement les données et pas les formules (en gardant la formule bien sûr) je prends aussi.

Merci à vous

Up

Personne pour un petit coup de main.
L'effacement des plages est le seul truc qui coince.
Et je tourne en rond.

Merci par avance.

Bonjour,

Tu devrais partager un fichier d'exemple anonymisé pour avoir plus de chance d'avoir une réponse

Et aussi insérer ton code via le bouton pour qu'il soit plus lisible.

Cordialement,

Et voila le fichier.
https://docs.google.com/spreadsheets/d/1cvKwPZ5LOhMkyD3QnnXQ3OXQb4a_H1yobtUEMTWoWb0/edit?usp=drive_l...

C'est un agenda pour mes services.

L'évolution du script qui m'intéresse est test.gs, il crée le mois de l'agenda manquant dans le sens des mois de l'année.

Il duplique les plages de données DATAX ou X est un numéro .

Et j'aimerais pouvoir supprimer les plages de données que les personnes vont remplir.

pour l'exemple j'ai trois plages dans janvier DATA1, DATA2 et DATA3 , lorsque je copie la feuille il copie ces plages avec nom du nouveau mois
exemple FÉVRIER et DATA1 DATA2 ET DATA3.

Dans l'idée je veux effacer le contenu de ces plages dans la nouvelle feuille qu'il crée.

Rechercher des sujets similaires à "effacer contenu plages nommees"