Une alternative à arrayformula ?

Résolu/Fermé
biog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023 - 10 févr. 2023 à 14:47
biog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023 - 20 févr. 2023 à 16:06

Bonjour,

j'ai créé un formulaire pour faciliter la saisie de mon équipe, et à la fin de ma fonction ajouter je voudrais que les formules existantes dans le sheet Suivi!R2:AI2' soient étirés vers la dernière ligne rajoutée.

malheureusement, mon bricolage ne fonctionne pas, et je n'arrive pas non plus avec arrayformula.

spreadsheet.getActiveRange('Suivi!R2:AI2').autoFillToNeighbor(SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES) 

function ajouter(){
  let of = new OF(
    getNextOFId(),
    formQLSRange.getValue(),
    formTutoratRange.getValue(),
    formSecteurRange.getValue(),
    formVacationRange.getValue(),
    formOFRange.getValue(),
    formNphaseRange.getValue(),
    formNBpieceRange.getValue(),
    formStatutRange.getValue(),
    formTpspasseRange.getValue(),
    formTpssapRange.getValue(),
    formOTDoneRange.getValue(),
    formOTDtwoRange.getValue(),
    formOTQRange.getValue(),
    formCommentaireRange.getValue(),  
    spreadsheet.getActiveRange('Suivi!R2:AI2').autoFillToNeighbor(SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES) 
  )
  createOF (of);
}


Windows / Chrome 109.0.0.0

A voir également:

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 févr. 2023 à 16:09

Bonjour

Je n'ai pas de google sheets sous la main pour tester .. mais déjà, ce qui me parait étrange, c'est d'avoir placé l'autofill dans ton objet of ...

Pour moi, il faut l'exécuter en dehors .. et utiliser, le même genre de code que celui fourni sur la documentation officielle de google sheets, à savoir 

var sheet = SpreadsheetApp.getActiveSheet();
// Has values [1, 2, 3, 4].
var sourceRange = sheet.getRange("A1:A4");
// The range to fill with values.
var destination = sheet.getRange("A1:A20");
// Inserts new values in A5:A20, continuing the pattern expressed in A1:A4
sourceRange.autoFill(destination, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);

0
biog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023
16 févr. 2023 à 11:42

j'ai testé. ça fonctionne la première fois quand il faut étendre la 1er ligne jusqu'à la dernière, mais quand on rajoute une ligne en dessous la fonction autofill ne marche plus

J'avais ce code sous VBA qui permettait de faire le job :

Application.ScreenUpdating = False
Dim LastRw As Long
LastRw = Sheets("Suivi").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Suivi").Range("R2:AI" & LastRw).FillDown

il y aurait un équivalent?

0
biog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023
Modifié le 17 févr. 2023 à 14:49

De retour, bon j'avance de mon côté si jamais ça peut servir à quelqu'un par la suite.

j'ai trouvé comment copier les formules et les coller jusqu'à la dernière ligne non vide.

J'ai juste besoin d'aide pour que la formule s'exécute uniquement dans mon sheet 'suivi'

c'est la base, mais vu que je bidouille à l'aveugle, ben je sais pas faire :(

function etendreformul() {
var mysheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = mysheet.getSheets()[0];
 
 var MyLastRow = sheet.getLastRow();
 var MyFillDown = sheet.getRange(2,17,MyLastRow-1);
 sheet.getRange('Suivi!Q2:AH2').copyTo(MyFillDown);
}

merci

0
biog13 Messages postés 22 Date d'inscription lundi 12 juillet 2021 Statut Membre Dernière intervention 3 août 2023
20 févr. 2023 à 16:06

Bonjour,

Je clôture mon poste, avec le résultat de mes recherches si ça peut servir à quelqu'un

  function etendreformul() {

 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi');
 var mysheet = SpreadsheetApp.getActiveSpreadsheet();

 var MyLastRow = sheet.getLastRow();
 var MyFillDown = sheet.getRange(2,17,MyLastRow-1);
 sheet.getRange('Suivi!Q2:AH2').copyTo(MyFillDown);

}
0