importer d'un fichier vers un autre avec tri Le sujet est résolu

Avatar de l’utilisateur
Snake259
Messages : 10
Inscription : 26 nov. 2022 20:46
A remercié : 1 fois

importer d'un fichier vers un autre avec tri

Message par Snake259 »

Bonjour à tous,
Je commence avec Google Script.

Je voudrais importer la colonne1 d'un fichier A (ma base de données) vers la colonne 1 d'un fichier B (pour des utilisateurs) => jusque là, j'ai réussi avec IMPORTRANGE.
Chacun de mes 2 tableaux contient 45 lignes (4 lignes d'entête et 41 lignes de données).

Le problème : quand je supprime une donnée du fichier A, elle se supprime aussi dans le fichier B MAIS les données des autres colonnes se décalent et ne correspondant plus.
Il faudrait affecter chaque ligne à chaque entrée mais je ne vois pas comment.

Merci.
Avatar de l’utilisateur
NC-Ahmet

Coach Numericoach
Invétéré
Messages : 87
Inscription : 19 sept. 2022 14:09
A remercié : 16 fois
Remercié : 19 fois

Re: importer d'un fichier vers un autre avec tri

Message par NC-Ahmet »

Coucou Snake259, j'espère que tu vas bien !

Si j'ai bien compris, tu veux qu'à chaque édition de la colonne 1 de ton fichier A, la même ligne entière relative à celle-ci se supprime de ton fichier B, est-ce bien cela ?

Exemple : tu retires les données de la cellule A15 de ton fichier A, ça signifie que tu souhaites supprimer la totalité de la ligne 15 de ton fichier B et que tout ce qui y a en dessous remonte ?

Si c'est bien le cas, je te suggère de rajouter un déclencheur à l'édition (je te conseille un déclencheur installable, plus pratique en terme d'autorisation) qui va s'exécuter dès que tu modifieras ton fichier A.

Tu pourras ensuite faire un e.range.getRowIndex() afin de récupérer le numéro de ligne d'où l'édition s'est faite.

Enfin, tu pourras effectuer un SpreadSheetApp.openById(fileIdà partir duquel tu vas te connecter à ton fichier B et faire un deleteCells() de la ligne concernée.

Par contre, attention, dans ce cas de figure ça va supprimer la ligne de ton fichier B à chaque fois que tu vas éditer ton fichier A.

Dans ce cas tu peux rajouter une condition if (e.range.getColumnIndex === 1 && e.range.getValue() === "") pour t'assurer que ça ne le fasse uniquement au cas-où tu modifies la première colonne de ton fichier A avec une cellule vide.

Deuxième point de vigilance, ce script fait STRICTEMENT ce que tu m'as demandé et ce que je t'indique ici.

Ça signifie qu'il peut énormément buguer dans certains cas de figures (par exemple si tu supprimes une ligne dans ton fichier A) et tu n'obtiendras pas forcément les résultats attendus.

Donc perso je trouve que le script ici est plutôt problématique mais il répond à 100% à ta question... Je t'invite donc à le modifier à ta sauce pour qu'il soit correct, optimisé et opérationnel.

Autre info : garde ton IMPORTRANGE, il fait le taf. Même, je te conseille de l'imbriquer dans un QUERY avec "select * where Col1 is not null" pour ignorer les cellules vides du fichier A.

Je te fais une démo en image :
Image

Allez, c'est cadeau, voici le script (à absolument modifier avec tes données et à adapter à ta configuration pour éviter les bugs ainsi de suite...) : 

function supprimerLigneAuto(e) {
  const id = "ID DU FICHIER B"
  const sheetName = "NOM DE L'ONGLET DU FICHIER B"
  const ss = SpreadsheetApp.openById(id);
  const sheet = ss.getSheetByName(sheetName);
  const row = e.range.getRowIndex()
  e.range.getColumnIndex() === 1 && e.range.getValue() === "" ?
  sheet.getRange(`B${row}:${row}`).deleteCells(SpreadsheetApp.Dimension.ROWS) : "";
}


N'hésite pas à revenir vers moi si t'as des questions complémentaires.

A++ 😉
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous