Couper, copier et coller des plages à l’aide de l’API JavaScript Excel
Cet article fournit des exemples de code qui coupent, copient et collent des plages à l’aide de l’API JavaScript Excel. Pour obtenir la liste complète des propriétés et méthodes prises en charge par l’objet Range
, voir Classe Excel.Range.
Remarque
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.
Conseil
Pour tester les API couper, copier et coller de cet article dans un exemple complet, ouvrez Script Lab dans Excel et sélectionnez Copier et coller des plages dans notre bibliothèque d’exemples .
Copy and paste
La méthode Range.copyFrom réplique les actions Copier et Coller de l’interface utilisateur Excel. La destination est l’objet Range
qui copyFrom
est appelé sur. 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).
await Excel.run(async (context) => {
let 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");
await context.sync();
});
Range.copyFrom
dispose 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.
await Excel.run(async (context) => {
let 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
await context.sync();
});
Données avant la copie et le collage de la plage
Les données après la plage sont copiées et collées
Couper et coller (déplacer) des cellules
La méthode Range.moveTo déplace les cellules vers un nouvel emplacement dans le classeur. Ce comportement de déplacement de cellule fonctionne de la même façon que lorsque les cellules sont déplacées en faisant glisser la bordure de plage ou lors des actions 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 est développée pour englober le contenu source.
await Excel.run(async (context) => {
let 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");
await context.sync();
});