Couper, copier et coller des plages à l’aide de l Excel API JavaScript

Cet article fournit des exemples de code qui coupent, copient et collent des plages à l’aide Excel API JavaScript. Pour obtenir la liste complète des propriétés et méthodes que l’objet prend en Range charge, voir Excel. Classe Range.

Notes

L’API JavaScript Excel ne comprend pas d’objet ou de classe « Cellule ». L’API JavaScript Excel définit plutôt toutes les cellules Excel comme objetsRange. Une cellule individuelle dans l’interface utilisateur d’Excel se traduit par un objetRange avec une cellule dans l’API JavaScript Excel. Un objet Range peut également contenir plusieurs cellules contiguës. Consultez Travailler avec des cellules de calcul à l’aide de l’API JavaScript Excel pour en savoir plus.

Copy and paste

La méthode Range.copyFrom réplique les actions Copier et coller de l’interface Excel’utilisateur. La destination est Range l’objet copyFrom qui est appelé. La source à copier est transmise en tant que plage ou qu’adresse de chaîne représentant une plage.

L’exemple de code suivant copie les données de la plage A1:E1 dans la plage commençant en G1 (ce qui aboutit à un collage dans la plage G1:K1).

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    // copy everything from "A1:E1" into "G1" and the cells afterwards ("G1:K1")
    sheet.getRange("G1").copyFrom("A1:E1");
    return context.sync();
}).catch(errorHandlerFunction);

Range.copyFromdispose de trois paramètres facultatifs.

copyFrom(sourceRange: Range | RangeAreas | string, copyType?: Excel.RangeCopyType, skipBlanks?: boolean, transpose?: boolean): void;

copyType spécifie les données copiées de la source vers la destination.

  • Excel.RangeCopyType.formulas transfère les formules dans les cellules sources et conserve le positionnement relatif des plages de ces formules. Les entrées autres que des formules sont copiées telles quelles.
  • Excel.RangeCopyType.values copie les valeurs des données et, s’il s’agit d’une formule, le résultat de celle-ci.
  • Excel.RangeCopyType.formats copie la mise en forme de la plage, y compris la police, la couleur et d’autres paramètres de mise en forme, mais aucune valeur.
  • Excel.RangeCopyType.all (option par défaut) copie les données et la mise en forme, en conservant les formules des cellules si elles sont trouvées.

skipBlanks définit si les cellules vides sont copiées dans la destination. Quand la valeur est true, copyFrom ignore les cellules vides de la plage source. Les cellules ignorées ne remplacent pas les données existantes dans les cellules correspondantes de la plage de destination. La valeur par défaut est false.

transpose détermine si les données sont ou non transposées, ce qui signifie que ses lignes et colonnes sont permutées dans l’emplacement source. Une plage transposée est renversée le long de la diagonale principale, de sorte que les lignes 1, 2 et 3 deviennent les colonnes A, B et C.

L’exemple de code et les images suivants illustrent ce comportement dans un scénario simple.

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getItem("Sample");
    // copy a range, omitting the blank cells so existing data is not overwritten in those cells
    sheet.getRange("D1").copyFrom("A1:C1",
        Excel.RangeCopyType.all,
        true, // skipBlanks
        false); // transpose
    // copy a range, including the blank cells which will overwrite existing data in the target cells
    sheet.getRange("D2").copyFrom("A2:C2",
        Excel.RangeCopyType.all,
        false, // skipBlanks
        false); // transpose
    return context.sync();
}).catch(errorHandlerFunction);

Données avant que la plage ne soit copiée et copiée

Données dans Excel la méthode de copie de plage a été exécuté.

Données une fois la plage copiée et copiée

Données dans Excel une fois que la méthode de copie de plage a été exécuté.

Couper et coller (déplacer) des cellules

La méthode Range.moveTo déplace les cellules vers un nouvel emplacement dans le workbook. Ce comportement de déplacement de cellule fonctionne de la même manière que lorsque les cellules sont déplacées en faisant glisser la bordure de la plage ou lors de l’action Couper et coller. La mise en forme et les valeurs de la plage sont déplacées vers l’emplacement spécifié en tant que destinationRange paramètre.

L’exemple de code suivant déplace une plage avec la Range.moveTo méthode. Notez que si la plage de destination est plus petite que la source, elle sera étendue pour englober le contenu source.

Excel.run(function (context) {
    var sheet = context.workbook.worksheets.getActiveWorksheet();
    sheet.getRange("F1").values = [["Moved Range"]];

    // Move the cells "A1:E1" to "G1" (which fills the range "G1:K1").
    sheet.getRange("A1:E1").moveTo("G1");
    return context.sync();
});

Voir aussi